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

 

posted @ 2019-03-30 10:30  琴声清幽  阅读(183)  评论(0编辑  收藏  举报