Android listView 繼承ListActivity的用法 在手機中經常有列表方式。如果Activity中只有唯??個List(這也是通常的情況),可以繼
承ListActivity來實現。我們用兩個例子來學習List。
List例子?:利用Android自帶的List格式
步驟?:Android XML文件
ListActivity是?個全屏的list,如果我們需要定制layout,例如加上?個button之類的什么的,我們
需將ListView 的id設置為“@android:id/list”,我們可以同getListView來獲取ListView的對象,下面
是XML的例子:
....
... ?
方式,即設置
@android :id/list ?-->
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false" />
步驟二:源代碼
1)使用String數組設置List的item內容
例如:String[] items={"One", "Two", "Three", "Four", "Five"};
2)在onCreate中將item的內容加入,使用setListAdapter并設置List的格式
setListAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,items));
ArrayAdapter有三個參數,第?是對象,第二是List的格式,第三個是List的內容。對于格式這個
例子采用了Android自定義的 幾種格式,后面會具體列出。android.R.layout.simple_list_item_1
是TextView的方式,采用big font,是最為常見的方式。
3)點擊List的Callback方法
由于集成了ListActivity,可以直接使用回調函數onListItemClick
4)例子
public class BeginingBook extends ListActivity {
String[] items={"One","Two","Three","Four","Five","Six","Serven"};
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter( this ,
android.R.layout.simple_list_item_1, items ));
button =(Button)findViewById(R.id.chapter7);
}
public void onListItemClick (ListView parent,View v, int position, long id){
button.setText(items[position]); //position是點擊的item的序號,從0開始。
}
}
5)不同的呈現模式
我們修改ArrayAdapter的第二個顯示的模式。另外可以通過getListView()獲取ListView的對象,設
置ListView 的?些屬性,ListView的?些常用方法
:setChoiceMode(),getCheckedItemPositions() 。
setListAdapter (new
ArrayAdapter(this, android.R.layout.simple_list_item_single_choice
,items));
getListView().setChoiceMode (ListView.CHOICE_MODE_SINGLE); //表明有選項,
如果不設置,缺省為none,即我們點擊后仍無反應
setListAdapter (new
ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice
,items));
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //注意,只要點
擊就會觸發Callback,而不過是的點擊后選上還是變為取消。
setListAdapter (new
ArrayAdapter(this, android.R.layout.simple_list_item_checked ,items));
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
下面,第?個圖為android.R.layout.simple_list_item_1,接著依次為上面三種格式。
List例子二:自定義的List格式(來自Tutorial)
步驟?:建立?個描述list item格式的XML文件
android:id="@+id/rowtv1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16dip">
步驟二:通過XML定義item
在第?個例子中,我們使用String[]來定制item。但是之前,我們也學習到,為了適合多種語言,
最要這些信息都在XML文件中定義,只需更換XML文件,就可以適配不同的語言。我們
在string.xml文件中增加相關的定義:
… …
Bharain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
步驟三:源代碼
public class Chapter7Test2 extends ListActivity {
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[]
contries=getResources().getStringArray(R.array.countries_arry);?
setListAdapter(new ArrayAdapter(this, R.layout.chapter_7_test2_list,
contries));
ListView lv=getListView ();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener (new OnItemClickListener(){
public void onItemClick(AdapterView> parent, View view, int position, long id){
//Toast.makeText(Chapter7Test2.this, ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
}
Toast
上面給出Toast的例子。Toast.makeText(對象,文本內容,格式).show()。