安卓基础(十二)
来源:互联网 发布:用java编写的大型游戏 编辑:程序博客网 时间:2024/05/16 10:07
列表-适配器
- 列表-适配器
- 简介
- 正文
目标人群:没有基础的安卓初学者
知识点:RecyclerView的使用
目标:用在页面中使用RecyclerView展示列表数据
简介
- RecyclerView的适配器的相关说明
正文
1.在项目中创建一个名为ItemAdapter.java的类来作为RecyclerView的适配器,一个最基本的示例如下所示
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.viewHolder> { private ArrayList<String> infos = new ArrayList<String>(); public ItemAdapter(ArrayList<String> infos) { this.infos = infos; } @Override public viewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_card, viewGroup, false); return new viewHolder(view); } @Override public void onBindViewHolder(viewHolder viewHolder, int position) { String info = infos.get(position); View view = viewHolder.itemView; TextView textView = (TextView) view.findViewById(R.id.info_text); textView.setText(info); } @Override public int getItemCount() { return infos.size(); } class viewHolder extends RecyclerView.ViewHolder { public viewHolder(View itemView) { super(itemView); } }}
该类继承自RecyclerView.Adapter,需要传入一个RecyclerView.ViewHolder的实现类来保证ViewHolder的实现,在本类中为内部类viewHolder
至少需要实现三个方法,onCreateViewHolder(根据viewType参数创建对应的子view)、onBindViewHolder(将数据根据指定位置绑定到对应位置的viewHolder上)、getItemCount(RecyclerView的长度)
- onCreateViewHolder可根据不同viewType参数返回不同布局格式的子View,但需重写该Adapter的getItemViewType(int position)方法来指定不同位置对应的viewType值
2.MainActivity.java中添加如下代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); // 当每个子View的大小在布局中不会发生变化时,可以调用本句来提升性能 mRecyclerView.setHasFixedSize(true); // 为RecyclerView指定一个类型为LinearLayoutManager的layout manager LinearLayoutManager mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); //创建一个临时数据源 ArrayList<String> infos = new ArrayList<String>(); for (int a = 0; a < 50; a++) { infos.add("第" + (a + 1) + "行"); } //创建一个适配器对象 ItemAdapter itemAdapter = new ItemAdapter(infos); //为Recycleview指定一个适配器对象 mRecyclerView.setAdapter(itemAdapter); }
3.为了RecyclerView的美观考虑,应为每个itemView添加一个行间距,最简单的方法为找到item_card.xml在android.support.v7.widget.CardView中添加一个新的属性(card_view:cardUseCompatPadding=”true”),代码如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent"> <android.support.v7.widget.CardView android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="200dp" card_view:cardUseCompatPadding="true" card_view:cardCornerRadius="4dp"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v7.widget.CardView></LinearLayout>
4.重新Build你的项目并在模拟器上运行,如果可以看到一个纵向的列表,那么恭喜,本章完成。
0 0
- 安卓基础(十二)
- 安卓随手笔记:十二(app的安装方式)
- 安卓实习期间整理知识点(十二)
- JAVASE基础(十二)
- 安卓基础(一)
- 安卓基础(二)
- 安卓基础(三)
- 安卓基础(四)
- 安卓基础(五)
- 安卓基础(六)
- 安卓基础(七)
- 安卓基础(八)
- 安卓基础(九)
- 安卓基础(十)
- 安卓基础(十一)
- 安卓基础(十三)
- 安卓基础(十四)
- 安卓基础(十五)
- 13、MySQL-无符号(UNSIGNED)和零填充(ZEROFILL)
- 查找 iostat 命令列出的dm-xx设备
- 14、MySQL-唯一约束(UNIQUE KEY)
- 【转载】Hibernate的增删改查
- 手把手教你:Winscp连接Ubuntu
- 安卓基础(十二)
- 15、MySQL-修改数据表
- 年,月,日,天日期自动添加,减少
- 一些网络中流传的iptables脚本的误区(转)
- argc 和 argv[]
- 16、MySQL-插入记录
- 有权图的Floyed
- 随笔记录使用DNK时遇到的几个问题
- ssh从本地上传到Linux服务器