BaseAdapter的使用
2015-05-16 23:58
337 查看
package com.example.baseadaptertest; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; /** * ViewHolder 优化BaseAdapter的思路 * 1、创建Item类,用于封装数据 * 2、在构造方法中初始化用于映射的数据List * 3、创建ViewHolder,创建布局映射关系 * 4、判断convertView是否为null,若为空,则设置tag,否则通过tag取出ViewHolder * 5、给ViewHolder中的控件赋值设置数据。 */ public class MyAdapter extends BaseAdapter { private List<Item> mList; private LayoutInflater inflater; /* * 内部类 */ class ViewHolder { public ImageView imgView; public TextView title; public TextView content; } /** * 这样就把数据源和适配器关联起来了 * @param itemList */ public MyAdapter(List<Item> itemList , Context context) { // TODO Auto-generated constructor stub mList = itemList; inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } /** * 逗比式,么有利用到listview的缓存特征 */ /*public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.lv_item, null); ImageView imgView = (ImageView) view.findViewById(R.id.img); TextView title = (TextView) view.findViewById(R.id.title); TextView content = (TextView) view.findViewById(R.id.content); Item item = (Item) getItem(position); imgView.setImageResource(item.itemImageID); title.setText(item.itemTitle); content.setText(item.itemContent); return view; } */ /**普通式 * 如果没有缓存才创建新的View,但是findviewbyid事很费资源的,当视图树很复杂的时候,消耗的时间是很客观地 */ /* @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub if(convertView == null){ convertView = inflater.inflate(R.layout.lv_item, null);//如果没有缓存才创建新的View,但是findviewbyid事很费资源的,当视图树很复杂的时候,消耗的时间是很客观地 } ImageView imgView = (ImageView) convertView.findViewById(R.id.img); TextView title = (TextView) convertView.findViewById(R.id.title); TextView content = (TextView) convertView.findViewById(R.id.content); Item item = (Item) getItem(position); imgView.setImageResource(item.itemImageID); title.setText(item.itemTitle); content.setText(item.itemContent); return convertView; }*/ @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder viewHolder = new ViewHolder(); if(convertView == null){ viewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.lv_item, null); /** * 用ViewHolder来储存convertView的空的子View,最后关联到convertView */ ImageView imgView = (ImageView) convertView.findViewById(R.id.img); viewHolder.imgView = imgView; TextView title = (TextView) convertView.findViewById(R.id.title); viewHolder.title = title; TextView content = (TextView) convertView.findViewById(R.id.content); viewHolder.content = content; convertView.setTag(viewHolder);//关联一下 } else{ viewHolder = (ViewHolder) convertView.getTag();//通过关联,赋值一下 } Item item = (Item) getItem(position); /** * 通过给viewHolder.xxx赋值的方式,来给convertView赋值。 * 和普通模式相比,少了每次都要xxxView = convertView.findViewById(xxx),但多了储存空间,空间换时间 */ viewHolder.imgView.setImageResource(item.itemImageID); viewHolder.title.setText(item.itemTitle); viewHolder.content.setText(item.itemContent); return convertView; } }
相关文章推荐
- GridView使用BaseAdapter实现网格视图
- Listview使用BaseAdapter添加不同布局
- BaseAdapter使用的三种形式,逗比式,普通式,文艺式
- ListView应用Demo使用自定义的适配器继承BaseAdapter
- Android ListView使用BaseAdapter与ListView的优化
- 07_Android操作sqllite数据库(包括2中方式操作数据的方式),单元测试,BaseAdapter的使用,自定义view的综合使用案例
- Android ListView使用BaseAdapter与ListView的优化
- Android中关于Adapter的使用(下)BaseAdapter
- ListView 使用BaseAdapter
- BaseAdapter的使用与优化
- BaseAdapter的使用步骤以及setTag和getTag的作用
- BaseAdapter的使用
- Android BaseAdapter的使用
- 【Android】使用BaseAdapter实现复杂的ListView【转】
- Android 中万能的 BaseAdapter(Spinner,ListView,GridView) 的使用!
- Android开发之ListView-BaseAdapter的使用
- BaseAdapter的使用
- PullToRefresh使用详解(二)---重写BaseAdapter实现复杂XML下拉刷新
- Android ListView使用BaseAdapter与ListView的优化 (转至 http://www.open-open.com/lib/view/open1339485728006.html)
- 数据适配器BaseAdapter的使用与优化