listview擴展功能

轉自: http://blog.csdn.net/manoel/article/details/7582542



本章節翻譯自《Beginning-Android-4-Application-Development》,如有翻譯不當的地方,敬請指出。

原書購買地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


ListView是一個可以被深度擴展的視圖。在做項目的時候,擴展ListView去顯示數據是必不可免的。接下來會展示如何在ListView中去選擇多個物件,以及如何使用ListView的“過濾”功能。

1. 使用上一節的工程:BasicViews5。

2. 在BasicViews5Activity.java中添加一些代碼。

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. String[] presidents;  
  2.   
  3. /** Called when the activity is first created. */  
  4. @Override  
  5. public void onCreate(Bundle savedInstanceState) {  
  6.     super.onCreate(savedInstanceState);          
  7.     // ---no need to call this---  
  8.     // setContentView(R.layout.main);  
  9.   
  10.     ListView lstView = getListView();  
  11.                       
  12.     //lstView.setChoiceMode(ListView.CHOICE_MODE_NONE);   
  13.     //lstView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);   
  14.     lstView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);          
  15.     lstView.setTextFilterEnabled(true);  
  16.   
  17.     presidents =  
  18.             getResources().getStringArray(R.array.presidents_array);  
  19.   
  20.     setListAdapter(new ArrayAdapter<String>(this,  
  21.         android.R.layout.simple_list_item_checked, presidents));  
  22. }  
3. 按F11在模擬器上面調試。現在,可以單擊ListView中的每一個物件,同時在它的右側將會顯示,它已經被選擇了。


通過getListView()方法,得到了ListView的引用。之所以這麼做,是因爲我們想要通過編碼的方式去修改ListView的行爲特徵。

在這種情況下,使用setChoiceMode()方法去設置ListView迴應用戶點擊事件的響應方式。舉個例子,當設置ListView.CHOICE_MODE_MULTIPLE,意味着用戶可以進行多項選擇:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. ListView lstView = getListView();  
  2.                   
  3. //lstView.setChoiceMode(ListView.CHOICE_MODE_NONE);   
  4. //lstView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);   
  5. lstView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);       

ListView另外一個非常牛的功能是“過濾”。當通過setTextFilterEnable()方法把“過濾”功能激活後,用戶就可以在軟鍵盤上面輸入文字了,同時ListView將會自動地匹配用戶輸入的信息:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. lstView.setTextFilterEnabled(true);  

所有的帶“jhon”字樣的信息都會被過濾出來。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章