关于BaseAdapter在listView中的使用
2015-09-09 11:49
351 查看
使用BaseAdapter首先要重写里面的四个方法:
public int getCount()
//你的item的个数,也就是你需要展示的listView的列数。一般直接返回一个容器的size()
public Object getItem(int position)
//返回每个Item的数据
public long getItemId(int position)
//返回每个Item的ID,一般直接返回position
public View getView(int position, View convertView, ViewGroup parent)
//最重要的是:重绘视图,调用次数是由第一个方法确定的。最后将视图返回。
里面的参数 position是当前item的id,convertView是当前item的布局。
注意:有些控件必须设置成没有获利焦点与点击。
缓存处理:
如果listView过长当翻页时每次都需要重新加载控件这样十分浪费内存,就需要做缓存处理,通常的方法是写一个内部类的方式ViewHolder 用来储存已经加载过的控件。
public int getCount()
//你的item的个数,也就是你需要展示的listView的列数。一般直接返回一个容器的size()
public Object getItem(int position)
//返回每个Item的数据
public long getItemId(int position)
//返回每个Item的ID,一般直接返回position
public View getView(int position, View convertView, ViewGroup parent)
//最重要的是:重绘视图,调用次数是由第一个方法确定的。最后将视图返回。
里面的参数 position是当前item的id,convertView是当前item的布局。
注意:有些控件必须设置成没有获利焦点与点击。
缓存处理:
如果listView过长当翻页时每次都需要重新加载控件这样十分浪费内存,就需要做缓存处理,通常的方法是写一个内部类的方式ViewHolder 用来储存已经加载过的控件。
public class PersonAdapter extends BaseAdapter { private List<Person> persons; private Context context; public PersonAdapter(List<Person> persons, Context context) { super(); this.persons = persons; this.context = context; } @Override public int getCount() { return persons.size(); } @Override public Object getItem(int position) { return persons.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); /** * 获取布局 */ convertView = View.inflate(context, R.layout.avtivity_item, null); //通过holder找到控件 holder.name = (TextView) convertView.findViewById(R.id.item_textView_name); holder.age = (TextView) convertView.findViewById(R.id.item_textView_age); holder.button = (Button) convertView.findViewById(R.id.item_button); //设置tag convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //设置空间属性 holder.name.setText(persons.get(position).getName()); holder.age.setText(""+persons.get(position).getAge()); return convertView; } class ViewHolder { public TextView name; public TextView age; public Button button; } }
相关文章推荐
- “服务器推”技术的应用
- 一个比较完整的Inno Setup 安装脚本 - 增加了对ini文件设置的功能
- java垃圾回收机制和内存泄露
- What is VEX ?
- how to install protobuff python
- .Net使用微軟自帶的用戶驗證和登錄授權
- cocos2dx编程 之如何获取节点的中心点坐标
- 文章标题
- 项目管理_团队协作
- 使用streaming window函数统计用户不同时间段平均消费金额等指标
- 使用streaming window函数统计用户不同时间段平均消费金额等指标
- 使用streaming window函数统计用户不同时间段平均消费金额等指标
- dispatch_async & dispatch_sync理解
- 使用streaming window函数统计用户不同时间段平均消费金额等指标
- 用boost locale库进行字符集转换的问题
- Nginx负载均衡配置实例详解
- CreaAndroid【1】用注解和反射实现Json自动化解析
- android 下拉刷新的时候,有的手机会把分割线给下拉拖出来,处理divider解决
- mysql索引总结----mysql 索引类型以及创建
- 异步获取数据Ajax,以及对获取的数据进行绑定(显示在页面上)