【Android笔记】如何创建列表视图3
生活随笔
收集整理的這篇文章主要介紹了
【Android笔记】如何创建列表视图3
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
接著上一篇實現一個帶有復選框的列表視圖,這要求對Adapter有比較清楚的理解。
1. ?ArrayAdapter從Layout讀取TextView控件,返回給ListView顯示,這個處理在ArrayAdapter的getView方法里,我們可以繼承這個類,覆蓋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類改為從ListActivity繼承,ListActivity默認以ListView為根視圖,因此不需要Layout文件以及調用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. ?運行程序看效果:?? ?
1. ?ArrayAdapter從Layout讀取TextView控件,返回給ListView顯示,這個處理在ArrayAdapter的getView方法里,我們可以繼承這個類,覆蓋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類改為從ListActivity繼承,ListActivity默認以ListView為根視圖,因此不需要Layout文件以及調用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里,我們創建一個CheckArrayAdapter,其構造函數要求傳入一個以CheckBox為根視圖的Layout文件ID,怎么樣創建Layout已經非常熟悉,不再描述。不過創建了Layout后需要對CheckBox設一個屬性,將Focusable設為False,只有這樣,ListView才能得到按鍵事件,才能觸發OnItemClickListener。?? ?調用getListView()將返回ListActivity里的ListView控件。?? ?在ItemClick事件,切換CheckBox的選中狀態。3. ?運行程序看效果:?? ?
轉載于:https://www.cnblogs.com/lingo/archive/2010/04/04/1704385.html
總結
以上是生活随笔為你收集整理的【Android笔记】如何创建列表视图3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习使用RIA Framework Fl
- 下一篇: 【转】构建Android平台Google