(1)、定义一个数组来存放ListView中item的内容。
(例如:
private static final String[] strs = { "first", "second", "third", "fourth", "fifth" };
(2)、通过实现ArrayAdapter的构造函数来创建一个ArrayAdapter的对象。
(例如:
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, strs);
,其中第二个参数可以自定义一个layout,但是这个layout必须要有TextView控件。);
(3)、通过ListViewsetAdapter()方法绑定ArrayAdapter。
(例如:
listView.setAdapter(adapter))
另外:
(1)通过指定android.R.layout.simple_list_item_checked这个资源,实现带选择框的ListView。
需要用setChoiceMode()方法设定选择为多选还是单选,否则将不能实现选择效果。
(例如:
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked, strs)); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
(2)通过指定android.R.layout.simple_list_item_multiple_choice这个资源实现带CheckBox的ListView。
(例如:
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,strs)); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
(3)通过指定android.R.layout.simple_list_item_single_choice这个资源实现带RadioButton的ListView。
(例如:
listView.setAdapter(newArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice,strs)); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
ListView绑定一个点击监听器:
listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2 ,long arg3) { } });
2、ListView使用SimpleAdapter
(1)根据需要定义ListView每行所实现的布局。
(2)定义一个HashMap构成的列表,将数据以键值对的方式存放在里面。
(3)构造SimpleAdapter对象。
(4)将LsitView绑定到SimpleAdapter上。
3、 ListView使用BaseAdapter与ListView的优化
使用BaseAdapter必须写一个类继承它,同时BaseAdapter是一个抽象类,继承它必须实现它的方法。其中最重要的是getView()方法。
getCount();
getItem(int position);
getItemId(int position) ;
getView(int position, View convertView, ViewGroup parent);
当系统开始绘制ListView的时候,首先调用getCount()方法。得到它的返回值,即ListView的长度。然后系统调用getView()方法,根据这个长度逐一绘制ListView的每一行。getItem()和getItemId()是在需要处理和取得Adapter中的数据时调用。
当convertView为空时,用setTag()方法为每个View绑定一个存放控件的ViewHolder对象。
当convertView不为空,重复利用已经创建的view的时候,使用getTag()方法获取绑定的ViewHolder对象,这样就避免了findViewById对控件的层层查询,而是快速定位到控件。
public class WeatherActivityAdapter extends BaseAdapter { private Context context; private ArrayList<WeatherBean> list; public WeatherActivityAdapter(Context context, ArrayList<WeatherBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { vh = new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.weather_item_layout, parent, false); vh.tv_date = (TextView) convertView.findViewById(R.id.date_textView); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } WeatherBean bean=list.get(position); vh.tv_date.setText(bean.date); return convertView; } } class ViewHolder { TextView tv_date; }