ListView 加载数据
来源:互联网 发布:怎样看b超单上的数据 编辑:程序博客网 时间:2024/05/28 06:06
在Android程序开发中,ListView的使用是比较常见的。。也经常需要重写BaseAdapter来生成自己的Adapter。。最后我们会写到这个方法:
public View getView(int position, View convertView, ViewGroup parent) {
//your code here
return null;
}
如果一个ListView的Item中包含一个ImageView和一个TextView
1)最初级的写法:
public View getView(int position, View convertView, ViewGroup parent) {View v = LayoutInflater.from(mContext).inflate(R.layout.test, null);ImageView iv = (ImageView)v.findViewById(R.id.ImageView);iv.setImageResource(mList.get(position).getDrawable());TextView tv = (TextView)v.findViewById(R.id.TextView);tv.setText(mList.get(position).getTextId());return v;}
每次滑动ListView的时候都要生成一个View并要findViewById;耗费内存和时间,影响性能和系统使用流畅度
2)稍微高级一点,之前也是这么写的:重用View convertView,只有当convertView为空的时候,才需要生成View
public View getView(int position, View convertView, ViewGroup parent) {if (convertView != null) {convertView = LayoutInflater.from(mContext).inflate(R.layout.test, null);}ImageView iv = (ImageView)convertView.findViewById(R.id.ImageView);iv.setImageResource(mList.get(position).getDrawable());TextView tv = (TextView)convertView.findViewById(R.id.TextView);tv.setText(mList.get(position).getTextId());return convertView;}虽然重用了View 但是仍然每次findViewById;在数据量比较大的时候,影响比较明显~
3) 更高级一点,今后都准备这么写的:使用ViewHolder,利用setTag和getTag的方式省去重复性的findViewById的工作:
static class ViewHolder {ImageView image;TextView text;}public View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView != null) {convertView = LayoutInflater.from(mContext).inflate(R.layout.test, null);holder = new ViewHolder();holder.image = (ImageView)convertView.findViewById(R.id.ImageView);holder.text = (TextView)convertView.findViewById(R.id.TextView);convertView.setTag(holder);}else {holder = convertView.getTag();}//利用holder进行对应的listview的item的更新holder.image.setImageResource(mList.get(position).getDrawable());holder.text.setText(mList.get(position).getTextId());return convertView;}
0 0
- ListView数据动态加载
- Listview动态加载数据
- Listview动态加载数据
- ListView动态加载数据
- ListView 分段加载数据
- Listview动态加载数据
- ListView中加载数据
- ListView之数据加载
- ListView分页加载数据
- Listview动态加载数据
- Listview动态加载数据
- ListView分页加载数据
- listView分页加载数据
- listView 分页加载数据
- ListView分页加载数据
- ListView 加载数据
- ListView 分页加载数据
- Listview动态加载数据
- 黑马程序员06——OC之Fundation(NSArray基本使用)
- Combinations
- 高效能程序员的七个习惯
- 帝国的重生
- hdu 2113 被虐!!
- ListView 加载数据
- 【剑指offer】求旋转数组的最小数字8
- 用GLUT库开始玩儿OpenGL
- [翻译]继承结构的进化
- ASP.NET调用JavaScript
- std' : is not a class or namespace name,解决
- 使用Commons Chain(2)
- JAVA游戏入门开发DAY 2 基本架构
- 全面深入认识C变量