adapter的优化---配合上一篇viewHolder的封装
来源:互联网 发布:上海网络借贷平台备案 编辑:程序博客网 时间:2024/06/05 15:39
在上一篇viewHolder的封装中,我们对listview这种控件的使用做了viewHolder的优化。使用中我们发现还是要setAdapter使用BaseAdapter这种安卓原生的适配器,所以这次我们进一步的优化listview从封装适配器这个角度。当封装好了adapter和viewHolder再使用listview会更加的方便。
自己写一个CommonAdapter来封装adapter代码如下:
/** * @param <B> 实体类bean 绑定数据 */public abstract class CommonAdapter<B> extends BaseAdapter { protected Context mContext; private int mItemLayoutId; private List<B> mDataList;//存放实体类的列表(数据存放在实体类中) public CommonAdapter(Context mContext, int mItemLayoutId) { this(mContext, null, mItemLayoutId); } public CommonAdapter(Context mContext, List<B> dataList, int itemLayoutId) { this.mContext = mContext; this.mDataList = dataList; this.mItemLayoutId = itemLayoutId; } public void setDataList(List<B> listData) { this.mDataList = listData; notifyDataSetChanged(); } public List<B> getDataList() { return mDataList; } @Override public int getCount() { return mDataList == null ? 0 : mDataList.size(); } @Override public B getItem(int position) { return mDataList.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { CommonViewHolder commonViewHolder = CommonViewHolder.get(mContext, convertView, mItemLayoutId); B itemData = getItem(position); if (position < mDataList.size() && itemData != null) { bindData(commonViewHolder, position, itemData); } return commonViewHolder.getConvertView(); } /** * 绑定列表项中的数据 * @param commonViewHolder * @param position * @param itemData */ public abstract void bindData(CommonViewHolder commonViewHolder, int position, B itemData);}
使用方法
public class MainActivity extends AppCompatActivity { ArrayList<HashMap<String, Object>> itemDataList = new ArrayList<HashMap<String, Object>>();//存放数据 private ListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.listview); MyAdapter myAdapter = new MyAdapter(MainActivity.this, R.layout.item_listview); myAdapter.setDataList(addData()); mListView.setAdapter(myAdapter); } private class MyAdapter extends CommonAdapter<HashMap<String, Object>> { public MyAdapter(Context mContext, int mItemLayoutId) { super(mContext, mItemLayoutId); } @Override public void bindData(CommonViewHolder commonViewHolder, int position, HashMap<String, Object> itemData) { commonViewHolder.setText(R.id.tv_title,(String) getDataList().get(position).get("itemTitle")); commonViewHolder.setText(R.id.tv_content, (String) getDataList().get(position).get("itemData")); } } /** * 数据源 * * @return */ public ArrayList<HashMap<String, Object>> addData() { ArrayList<HashMap<String, Object>> listItemData = new ArrayList<HashMap<String, Object>>(); HashMap<String, Object> hashMap; for (int i = 0; i < 20; i++) { hashMap = new HashMap<String, Object>(); hashMap.put("itemTitle", "第" + i + "行"); hashMap.put("itemData", "www"); listItemData.add(hashMap); } return listItemData; }}
使用了commonAdapter,只需要关注列表项中数据绑定的问题。列表项中每一项应该填什么数据即可。
0 0
- adapter的优化---配合上一篇viewHolder的封装
- 封装的viewholder和adapter
- RecyclerView的ViewHolder和Adapter的封装优化
- 封装好的万能ViewHolder和Adapter
- RecyclerView中Adapter和ViewHolder的封装
- listview的优化---viewHolder的封装
- 【FirstKotlinApp】使用Kotllin封装Adapter时ViewHolder的一点技巧
- 利用ViewHolder优化自定义Adapter的典型写法
- 利用ViewHolder优化自定义Adapter的典型写法
- Android数据适配器(Adapter)优化:使用高效的ViewHolder
- 利用ViewHolder优化自定义Adapter的典型写法
- 利用ViewHolder优化自定义Adapter的典型写法
- 利用ViewHolder优化自定义Adapter的典型写法
- Android数据适配器(Adapter)优化:使用高效的ViewHolder
- 利用ViewHolder优化自定义Adapter的典型写法
- ListView的优化使用-抽取ViewHolder以及adapter类
- 封装Adapter ViewHolder
- Android中利用ViewHolder优化自定义Adapter的典型写法(讨论ViewHolder的修饰方式)
- JavaScrip使用语法规范
- codeforces 350 div2 D Magic Powder - 2 二分
- conv是卷积运算,同时也可以做多项式的乘法
- ubuntu下Android4.4 CTS搭建(一)
- 高并发数据结构Disruptor解析(3)
- adapter的优化---配合上一篇viewHolder的封装
- 当你下定决心要做一件事情
- 2015阿里实习招聘笔试题-自己尝试做的答案
- [Cloud Computing]Mechanisms: Traffic Monitor
- Redis 配置redis.conf 解读
- 多线程中如何去保证线程安全
- 10.树.线索二叉树
- ubuntu下Android4.4 CTS搭建(二)
- c标签总结笔记