版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.aidemx.cn/?p=432
RecyclerView概述
RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。
接下来将使用替代support的androidx讲解RecyclerView的用法。
RecyclerView基本用法
因为RecyclerView属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在build.gradle中添加对应的支持库。
添加支持库
在app/build.gradle中的dependencies闭包添加以下内容:
implementation 'androidx.recyclerview:recyclerview:1.0.0'
添加RecyclerView到布局文件
新建item_main.xml
创建TextView来显示数据源
新增适配器MyAdapter
为RecyclerView新增适配器MyAdapter,并让其继承于RecyclerView.Adapter,把泛型指定为MyAdapter.ViewHolder。
/**
* Created by 梦雪 on 2019/09/29.
*/
public class MyAdapter extends RecyclerView.Adapter {
//声明数据源
private String[] data;
/**
* 为每个数据项提供对视图的引用
*/
class ViewHolder extends RecyclerView.ViewHolder {
private View view;
//声明TextView
public TextView tv;
public ViewHolder(View view) {
super(view);
this.view = view;
//找到TextView控件
tv = view.findViewById(R.id.itemmainTextView1);
}
}
/**
* 提供一个String[]类型的构造方法
*/
public MyAdapter(String[] data) {
this.data = data;
}
/**
* 创建视图
*/
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup p1, int p2) {
// TODO: Implement this method
//创建一个新视图
View view=LayoutInflater.from(p1.getContext()).inflate(R.layout.item_main, p1, false);
return new ViewHolder(view);
}
/**
* 绑定视图
*/
@Override
public void onBindViewHolder(MyAdapter.ViewHolder p1, final int p2) {
// TODO: Implement this method
//设置文本内容
p1.tv.setText(data[p2]);
//列表点击事件
p1.itemView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View p1) {
// TODO: Implement this method
//点击列表时我们弹出点击列表项的文本内容
Toast.makeText(p1.getContext(), data[p2], Toast.LENGTH_LONG).show();
}
});
}
/**
* 返回数据源的数量
*/
@Override
public int getItemCount() {
// TODO: Implement this method
return data.length;
}
}
修改MainActivity.java
/**
* Created by 梦雪 on 2019/09/29.
*/
public class MainActivity extends Activity {
//创建数据源
String[] data={"A","B","C","D","E"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView rv = findViewById(R.id.activitymainRecyclerView1);
//添加分割线
rv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
//使用线性布局管理器
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
rv.setLayoutManager(layoutManager);
//设置适配器
MyAdapter adapter = new MyAdapter(data);
rv.setAdapter(adapter);
}
}
运行效果:
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.aidemx.cn/?p=432
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持以下吧
请登录后发表评论
注册
社交帐号登录