【Android笔记】如何创建列表视图3
生活随笔
收集整理的這篇文章主要介紹了
【Android笔记】如何创建列表视图3
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
接著上一篇實(shí)現(xiàn)一個(gè)帶有復(fù)選框的列表視圖,這要求對(duì)Adapter有比較清楚的理解。
1. ?ArrayAdapter從Layout讀取TextView控件,返回給ListView顯示,這個(gè)處理在ArrayAdapter的getView方法里,我們可以繼承這個(gè)類(lèi),覆蓋getView,改成讀取CheckBox控件,看下面的代碼:CheckListView.java????class?CheckArrayAdapter<T>?extends?ArrayAdapter<T>
????{
????????public?CheckArrayAdapter(Context?context,?int?checkBoxResId,
????????????????T[]?objects)
????????{
????????????super(context,?checkBoxResId,?objects);
????????}
????????public?CheckArrayAdapter(Context?context,?int?checBoxResId)
????????{
????????????super(context,?checBoxResId);
????????}
????????
????????public?View?getView(int?position,?View?convertView,?ViewGroup?parent,?int?resource)
????????{
????????????CheckBox?checkBox;
????????????if?(convertView?==?null)
????????????????checkBox?=?(CheckBox)LayoutInflater.from(getContext()).inflate(resource,?parent,?false);
????????????else
????????????????checkBox?=?(CheckBox)convertView;
????????????
????????????T?item?=?getItem(position);
????????????if?(item?instanceof?CharSequence)
????????????????checkBox.setText((CharSequence)?item);
????????????else
????????????????checkBox.setText(item.toString());
????????????return?checkBox;
????????}
????}
2. ?前一篇的CheckListView類(lèi)改為從ListActivity繼承,ListActivity默認(rèn)以L(fǎng)istView為根視圖,因此不需要Layout文件以及調(diào)用setContentView。CheckListView.java????public?class?CheckListView?extends?ListActivity
????{
????????@Override
????????protected?void?onCreate(Bundle?savedInstanceState)
????????{
????????????super.onCreate(savedInstanceState);
????????????
????????????CheckArrayAdapter<String>?adapter?=?new?CheckArrayAdapter<String>(
????????????????????this,?R.layout.checkbox_item,?mStrList);
????????????getListView().setAdapter(adapter);
????????????getListView().setOnItemClickListener(new?AdapterView.OnItemClickListener()
????????????{
????????????????@Override
????????????????public?void?onItemClick(AdapterView<?>?parent,?View?view,?int?pos,
????????????????????????long?id)
????????????????{
????????????????????ListView?listView?=?(ListView)parent;
????????????????????CheckBox?checkBox?=?(CheckBox)listView.getChildAt(pos);
????????????????????checkBox.setChecked(!checkBox.isChecked());
????????????????}
????????????});
????????????getListView().setSelection(2);
????????}
????????
????????private?String?[]?mStrList?=?
????????{
????????????"Hello1",
????????????"Hello2",
????????????"Hello3"
????????};
????}
3. ?運(yùn)行程序看效果:?? ?
1. ?ArrayAdapter從Layout讀取TextView控件,返回給ListView顯示,這個(gè)處理在ArrayAdapter的getView方法里,我們可以繼承這個(gè)類(lèi),覆蓋getView,改成讀取CheckBox控件,看下面的代碼:CheckListView.java????class?CheckArrayAdapter<T>?extends?ArrayAdapter<T>
????{
????????public?CheckArrayAdapter(Context?context,?int?checkBoxResId,
????????????????T[]?objects)
????????{
????????????super(context,?checkBoxResId,?objects);
????????}
????????public?CheckArrayAdapter(Context?context,?int?checBoxResId)
????????{
????????????super(context,?checBoxResId);
????????}
????????
????????public?View?getView(int?position,?View?convertView,?ViewGroup?parent,?int?resource)
????????{
????????????CheckBox?checkBox;
????????????if?(convertView?==?null)
????????????????checkBox?=?(CheckBox)LayoutInflater.from(getContext()).inflate(resource,?parent,?false);
????????????else
????????????????checkBox?=?(CheckBox)convertView;
????????????
????????????T?item?=?getItem(position);
????????????if?(item?instanceof?CharSequence)
????????????????checkBox.setText((CharSequence)?item);
????????????else
????????????????checkBox.setText(item.toString());
????????????return?checkBox;
????????}
????}
?
2. ?前一篇的CheckListView類(lèi)改為從ListActivity繼承,ListActivity默認(rèn)以L(fǎng)istView為根視圖,因此不需要Layout文件以及調(diào)用setContentView。CheckListView.java????public?class?CheckListView?extends?ListActivity
????{
????????@Override
????????protected?void?onCreate(Bundle?savedInstanceState)
????????{
????????????super.onCreate(savedInstanceState);
????????????
????????????CheckArrayAdapter<String>?adapter?=?new?CheckArrayAdapter<String>(
????????????????????this,?R.layout.checkbox_item,?mStrList);
????????????getListView().setAdapter(adapter);
????????????getListView().setOnItemClickListener(new?AdapterView.OnItemClickListener()
????????????{
????????????????@Override
????????????????public?void?onItemClick(AdapterView<?>?parent,?View?view,?int?pos,
????????????????????????long?id)
????????????????{
????????????????????ListView?listView?=?(ListView)parent;
????????????????????CheckBox?checkBox?=?(CheckBox)listView.getChildAt(pos);
????????????????????checkBox.setChecked(!checkBox.isChecked());
????????????????}
????????????});
????????????getListView().setSelection(2);
????????}
????????
????????private?String?[]?mStrList?=?
????????{
????????????"Hello1",
????????????"Hello2",
????????????"Hello3"
????????};
????}
?
?? ?在onCreate里,我們創(chuàng)建一個(gè)CheckArrayAdapter,其構(gòu)造函數(shù)要求傳入一個(gè)以CheckBox為根視圖的Layout文件ID,怎么樣創(chuàng)建Layout已經(jīng)非常熟悉,不再描述。不過(guò)創(chuàng)建了Layout后需要對(duì)CheckBox設(shè)一個(gè)屬性,將Focusable設(shè)為False,只有這樣,ListView才能得到按鍵事件,才能觸發(fā)OnItemClickListener。?? ?調(diào)用getListView()將返回ListActivity里的ListView控件。?? ?在ItemClick事件,切換CheckBox的選中狀態(tài)。3. ?運(yùn)行程序看效果:?? ?
轉(zhuǎn)載于:https://www.cnblogs.com/lingo/archive/2010/04/04/1704385.html
總結(jié)
以上是生活随笔為你收集整理的【Android笔记】如何创建列表视图3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 学习使用RIA Framework Fl
- 下一篇: 【转】构建Android平台Google