public class MainActivity extends Activity {
private ListView listView;
List<String> datas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView1);
datas = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
datas.add("item" + i);
}
listView.setAdapter(new MyAdapter());
}
//设配器
class MyAdapter extends BaseAdapter {
public int getCount() {
return datas.size();
}
public Object getItem(int position) {
return datas.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder vHolder;
// listview的一级优化,减少view的创建次数(判断回收池是否为空)
if (convertView == null) {
vHolder = new ViewHolder();
view = getLayoutInflater().inflate(R.layout.adapter_item, null);
//在容器中找到控件
vHolder.iv = (ImageView) view.findViewById(R.id.imageView1);
vHolder.tv = (TextView) view.findViewById(R.id.textView1);
//将容器放在
view.setTag(vHolder);
} else {
view = convertView;
vHolder = (ViewHolder) view.getTag();
}
// listview的二级优化,减少这一步的操作(也就是减少在控件中查找textview的次数)
//TextView textView = (TextView) view.findViewById(R.id.textView1);
//textView.setText(datas.get(position));
vHolder.tv.setText(datas.get(position));
return view;
}
}
// 作为一个容器,用来存放item中的每一个控件
class ViewHolder {
TextView tv;
ImageView iv;
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
listview的二级优化
最新推荐文章于 2021-05-25 15:45:42 发布
本文介绍了一个简单的Android应用程序示例,展示了如何使用自定义的适配器为ListView填充数据。通过创建一个继承自BaseAdapter的MyAdapter类,实现了ListView的数据绑定,并介绍了ViewHolder模式的应用来提高性能。
391

被折叠的 条评论
为什么被折叠?



