Android进阶——RecycleView使用之自定义单选列表(二).docx
《Android进阶——RecycleView使用之自定义单选列表(二).docx》由会员分享,可在线阅读,更多相关《Android进阶——RecycleView使用之自定义单选列表(二).docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Android进阶进阶RecycleView的使用之的使用之自定义单选列表(二)自定义单选列表(二)上一篇文章介绍了下 RecycleView 的一些知识,以及组成成员所承担的角色和大致的原理流程,接下来就在实际应用中的一起体会吧,先放项目中的效果图直观感受下再一步步的去实现。(单击勾选同时动态获取设备的状态显示并获得对应的时间值,再次单击取消勾选,长按删除,单击自定义时弹出自定义对话框,选择时间之后显示到列表上)一、实现的核心思想很明显如果从 UI 方面去动态改变的话,不是不行,但是很麻烦,而我们知道 RecycleView只是提供了一个容器,界面呈现的效果从一定程度来说只是取决于 Recy
2、cleView.Adapter 里创建了什么样的 ViewHolder 以及填充什么样的数据,所以要实现这个效果只需要考虑去动态更新 RecycleView.Adapter,动态去绘制 ItemView 即可,剩下的逻辑就放在 Activity 去处理。二、编码实现1、使用 RecycleView 前得先在 Android studio 里对应的 module 模块下的 gradle 脚本引入dependencies compile fileTree(dir:libs,include:*.jar)testCompile junit:junit:4.12compile com.jakewhart
3、on:butterknife:7.0.1compile com.android.support:appcompat-v7:24.2.0compile com.android.support:recyclerview-v7:24.0.02、编写 RecycleView 里 item 的布局文件和 MainActivity 的布局文件RecycleView 里 item 的布局:MainActivity 的布局:3、编写 RecycleView 的 Adapter实现 Adapter 可以分为几步:新建自己的 Adapter 类继承自 RecyclerView.AdapterRecyclerVie
4、w.ViewHolder,根据自己的业务封装对应的 Bean实现 onCreateViewHolder 方法,这个方法的主要作用就是创建初始化对应的 ViewHolder,与 AdapterView 的 Adapter 中的 getView 方法类似,但仅仅是创建 ViewHolder 并未开始填充数据绘制。实现 getItemCount 返回数据集的 size定义自己的 ViewHolder 继承自 RecyclerView.ViewHolder,用于缓存 item,可以通过弱引用来减少 OOM定义 Item 的接口事件对应的回调接口package crazymo.train.recycle
5、view.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import java.lang.ref.WeakReference;import java.util.Array
6、List;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;import crazymo.train.recycleview.R;import crazymo.train.recycleview.bean.MainListItem;/*auther:Crazy.Mo*Date:2016/9/29*Time:14:36*Des:MainListView 的 Adapter*/public class MainAdapter extends RecyclerView.Adapter privat
7、e List mList=newArrayList();private LayoutInflater mLayoutInflater;private static MainRecycleViewClickListener mListener;private Context mContext;public MainAdapter(Context context)this.mContext=context;this.mLayoutInflater=LayoutInflater.from(context);public void setList(List list)mList.clear();thi
8、s.mList=list;notifyDataSetChanged();Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType)MainViewHolderviewHolder=newMainViewHolder(mLayoutInflater.inflate(R.layout.listv_item_main,parent,false);viewHolder.setDelayAdapter(this);return viewHolder;Overridepublic void
9、 onBindViewHolder(RecyclerView.ViewHolder holder,int position)(MainViewHolder)holder).tvDelayTime.setText(mList.get(position).getTime();(MainViewHolder)holder).tvDevState.setText(mList.get(position).getStateName();/根据 check 值动态创建对应的 itemif(mList.get(position).getIsCheck()=1)(MainViewHolder)holder).i
10、vCheck.setVisibility(View.VISIBLE);(MainViewHolder)holder).ivCheck.setBackgroundResource(R.mipmap.selected_icon);else(MainViewHolder)holder).ivCheck.setVisibility(View.INVISIBLE);(DelayViewHolder)holder).ivCheck.setOnClickListener(newView.OnClickListener()Overridepublic void onClick(View v)if(mListe
11、ner!=null)v.setBackgroundResource(R.mipmap.selected_icon););Overridepublic int getItemViewType(int position)return super.getItemViewType(position);Overridepublic int getItemCount()return mList.size();class MainViewHolder extends RecyclerView.ViewHolder Bind(R.id.tv_delay_time)TextView tvDelayTime;Bi
12、nd(R.id.tv_dev_state)TextView tvDevState;Bind(R.id.iv_check)ImageView ivCheck;private WeakReference ref;private MainAdapter mainAdapter;MainViewHolder(View itemView)super(itemView);ButterKnife.bind(this,itemView);itemView.setOnClickListener(new View.OnClickListener()Overridepublic void onClick(View
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 进阶 RecycleView 使用 自定义 列表
限制150内