ListView列表視圖是安卓組件中最常見的,它以垂直列表的形式展出需要顯示的列表項,比如:我們的系統設置,功能列表,新聞客戶端的下拉刷新等。
和特別的是:ListView不僅僅能夠通過組件進行創建,還有通過開發者自己繼承ListActivity實現。
一 使用ListView組件實現
作為組件,需要注意ListView的幾個基本屬性:
android:divider 為列表視圖設置分隔條,分隔可以使用顏色分割,也可以使用drawable資源進行分隔
android:dividerHeight 設置分隔條的高度
android:entries 通過資源數組指定ListView列表項
android:footerDividersEnable 設置foot view之前是否設置分隔條;當次屬性為true,可以通過addFooterView()方法設置footer view
android:headerDividersEnable 設置head view之前是否設置分隔條;當次屬性為true,可以通過addFooterView()方法設置head view
實際操作:
1.布局文件添加列表視圖,通過xml資源文件配置其顯示內容
//在布局中添加的ListView,不指定資源文件的數據
<ListView
android:id="@+id/listView1"
android:divider="@drawable/divide"
android:dividerHeight="3dp"
android:footerDividersEnabled="true"
android:headerDividersEnabled="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
//資源文件指定的數據
<string-array name="data"> <item >first</item> <item >second</item> <item >third</item> </string-array>
運行效果:
2.通過適配器設置顯示的內容
列表視圖重要的是顯示的內容:同Spinner一樣,當布局xml文件沒有指定要顯示的內容時,可以通過設配器設置列圖視表要顯示的內容。
列圖視表的使用分為兩個步驟:1>創建適配器 2>將適配器關聯給列圖視表組件
創建適配器:適配器創建可以通過資源文件創建,也可以使用字符串數組創建。創建適配器過程和下拉選擇框不同的是需要指定列圖視表顯示內容的形式(是否帶復選框或單選框)
資源文件創建:
ArrayAdapter<CharSequence> a = ArrayAdapter.createFromResource(this, R.array.data, android.R.layout.simple_list_item_checked);
通過字符串數組創建:
String[] str = new String[]{"first","second","third"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,str);
綁定適配器:
ListView v = (ListView)findViewById(R.id.listView1);
v.setAdapter(adapter);
注意:運行效果已經設置了顯示內容的形式
3.實現監聽
v.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> v, View arg1, int pos, long id) { String result = v.getItemAtPosition(pos).toString(); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); } });
二 繼承ListActivity實現
如果程序僅僅是要顯示一個列表窗口,可以直接繼承ListActivity實現。繼承了ListActivity之后,onCreate()方法不需要setContentView()方法設置顯示容器,ListActivity已經設置好了顯示。這時候,僅僅給ListActivity配置適配器即可。
需要將ListActivity繼承,之后添加設配器即可。關鍵代碼:
public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ArrayAdapter<CharSequence> a = ArrayAdapter.createFromResource(this, R.array.data, android.R.layout.simple_list_item_checked); setListAdapter(a); }
ListActivity的事件監聽和Activity有所不同,ListActivity已經實現了監聽事件,開發者將onListItemClick()覆蓋即可。
@Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); String result = l.getItemAtPosition(position).toString(); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); }
總結:和下拉列表視圖類似,顯示內容我們可以通過xml配置,也可以使用適配器適配。ListView效果的實現還可以繼承ListActivity,ListActivity已經實現了Activity的方法,不需要設置setContentView(),事件監聽方面覆蓋原來的onListItemClick()
水平有限,請留言指教!