2016/1/10 15:40:32
ListView的使用(未优化)
一.使用ArrayAdapter实现简单的数据展示
String[] data = {"北京","上海","深圳","天津","广州","武汉","合肥","哈尔滨","内蒙古","成都","重庆","长沙","拉萨"};
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data));
其中 android.R.layout.simple_list_item_1 为系统内置的布局文件,可用于简单的显示一段文本。当然我们也可以定义自己的布局并加载进去。
二.使用BaseAdapter实现图文并茂的数据展示
准备好布局,数据等准备工作,数据可以单独建立一个类,属性有文字以及图片,添加get和set方法,在List集合中保存它们。由于代码简单,就不贴出来了。主要看继承自BaseAdapter的MyAdapter中的代码:
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return mlist.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyItem myItem = mlist.get(position);
LayoutInflater layoutInflater = LayoutInflater.from(SecondActivity.this);
View v = layoutInflater.inflate(R.layout.second_layout_listview, null);
ImageView iv = (ImageView) v.findViewById(R.id.iv);
TextView tv = (TextView) v.findViewById(R.id.tv);
iv.setImageResource(myItem.getImg_id());
tv.setText(myItem.getDescribe());
return v;
}
}
此时的ListView每次滚动都会创建出新的View,效率很低,针对这个缺点,在下一篇中实现ListView的两种优化方案。
为ListView添加点击事件
lv_second.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyItem myItem = mlist.get(position);
Toast.makeText(SecondActivity.this,myItem.getDescribe(),Toast.LENGTH_LONG).show();
}
});