欢迎光临散文网 会员登陆 & 注册

Android开发学习教程(19)- Android RecyclerView列表用法

2023-01-28 14:53 作者:考研保研直通车  | 我要投稿

—— 放弃不难,但坚持一定很酷。

RecyclerView是什么

RecyclerView是一个和ListView一样用来显示大量数据列表但是比ListView更高效的列表控件。关于ListView的学习请见上一篇文章。

RecyclerView有什么用

RecyclerView用来更高效的展示大量数据列表。

RecyclerView怎么用

1. 导入依赖包

1
implementation 'androidx.recyclerview:recyclerview:1.1.0'

2. 布局中加入RecyclerView控件

1
2
3
4
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

3. 实例化RecycleView并设置布局方式

1
2
3
4
RecyclerView recyclerView = findViewById(R.id.recyclerview);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);

其中LinearLayoutManager就是类似ListView的功能,列表上下滚动(LinearLayoutManager.VERTICAL)或者左右滚动(LinearLayoutManager.VERTICAL)。除了可以设置为LinearLayoutManager还可以设置GridLayoutManager、StaggeredGridLayoutMnager,GridLayoutManager是网格摆放,而StaggeredGridLayoutMnager则是瀑布流摆放。

4. 获取数据,定义自己的数据适配器并设置到RecyclerView上

自定义BaseAdapter可以展示任意类型的数据列表项,其实上面SimpleAdapter和ArrayAdapter都是继承自BaseAdapter,区别在于getView方法,SimpleAdapter和ArrayAdapter的getView读者可以自行查看源码,基本和上面截取的一小段差不多。我们来看自定义BaseAdapter的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    // 获取数据,这里模拟获取到了20条数据
    stringList = new ArrayList<>();
    for (int i = 0; i < 20; i++) {
        stringList.add("Item" + i);
    }
    recyclerView.setAdapter(new MyAdapter());
    // 定义自己的数据适配器
    class MyAdapter extends RecyclerView.Adapter<myadapter.myviewholder> {
        @NonNull
        @Override
        public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_recyclerview, parent, false);
            return new MyViewHolder(itemView);
        }
        @Override
        public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, int position) {
            holder.tvName.setText(stringList.get(position));
        }
        @Override
        public int getItemCount() {
            return stringList == null 0 : stringList.size();
        }
    // 定义缓存ViewHolder
        class MyViewHolder extends RecyclerView.ViewHolder {
            public TextView tvName;
            public MyViewHolder(View itemView) {
                super(itemView);
                tvName = itemView.findViewById(R.id.tv_name);
                tvName.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this, tvName.getText(), Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
    }
</myadapter.myviewholder>

运行效果:

源码链接:https://yunjunet.cn/876790.html

Android开发学习教程(19)- Android RecyclerView列表用法的评论 (共 条)

分享到微博请遵守国家法律