zoukankan      html  css  js  c++  java
  • RecyclerView的使用。

    1.  两个布局文件,一个主布局,一个item单项布局。

    2. 三个概念,1. adapter,2.viewhold,3.RecyclerView

    3. 步骤如下,

    首先建立adapter类,里面嵌套内部类,viewhold类。

    adapter的类,继承的必须符合格式,是v7包下的RecyclerView的Adapter类,此类带有特定的泛型参数。并且实现其内部类的ViewHolder,该类ViewHolder又重写了其父类RecyclerView的ViewHolder的方法。

    viewhold类,必须继承自RecyclerView的ViewHolder。

    Adapter中有4个方法,一个构造方法,一个创建时方法,一个绑定时方法,一个取得记录个数。

    在构造方法中,将上下文和数据集传入。

    在创建时方法中(onCreateViewHolder),解析子布局,即item单项布局文件,并且返回,

    在绑定方法中,从数据集中取得单个“i”的数据,并且把数据设置到viewholder中

    后两个方法中的ViewHolder是主类中继承的父类的泛型参数,而此泛型参数又是内部类来实现的。主要作用:初始化子布局中的控件。

    public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
    
        private final Context context;
        private List<Divine> divines;
    
        public MyRecyclerViewAdapter(Context context, List<Divine> divines) {
            this.context = context;
            this.divines = divines;
        }
    
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            View itemView = (View) View.inflate(context, R.layout.item_recyclerview,null);
            return new ViewHolder(itemView);
        }
    
        @Override
        public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
            String gua_name =  divines.get(i).getGua_name();
            viewHolder.tv_gua_name.setText(gua_name);
        }
    
        @Override
        public int getItemCount() {
            return divines.size();
        }
    
    
    //内部类,用于解析单项item的布局
    class ViewHolder extends RecyclerView.ViewHolder { private TextView tv_gua_name; public ViewHolder(@NonNull View itemView) { super(itemView); tv_gua_name = itemView.findViewById(R.id.tv_gua_name); } } }

    第二步,将adapter显示在主activity中,

    public class AllListActivity extends AppCompatActivity {
    
        private  RecyclerView recyclerView;
        private  List<Divine> divines;
        private  MyRecyclerViewAdapter adapter ;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_all_list);
    //取数据
    DivineDao dd
    = new DivineDao(this); List<Divine> dds = dd.getZhuGua();

    recyclerView
    = findViewById(R.id.rv_all_list);


        //传入数据集
    adapter
    = new MyRecyclerViewAdapter(this,dds);

    recyclerView.setAdapter(adapter);
         //设置布局管理,此步骤为必须 recyclerView.setLayoutManager(
    new LinearLayoutManager(AllListActivity.this, LinearLayoutManager.VERTICAL, false)); }

    另外,在加入RecyclerView后,有显示不全的情况,参考本文上一个blog

  • 相关阅读:
    高效出去List集合和数组中的重复元素
    各进制间转换总结
    java集合应用类
    禁止键盘上的刷新键F5等
    Map迭代
    java 过滤字符串方法实现
    java 跟 咖啡的关系
    插件jfreechart+shh实现树状图 柱状图 折线图
    Struts2利用iText导出word文档(包含表格)
    request.getRequestURI() 、request.getRequestURL() 、request.getContextPath()、request.getServletPath()区别
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/10625543.html
Copyright © 2011-2022 走看看