RecyclerView的使用。

RecyclerView教程
本文介绍如何使用RecyclerView及适配器实现列表滚动效果。通过创建Adapter及ViewHolder类,解析item布局,展示数据集内容。

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

 

转载于:https://www.cnblogs.com/sdgtxuyong/p/10625543.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值