學習使用ListView顯示列表
阿新 • • 發佈:2019-01-08
ListView是android中顯示列表的控制元件,每一個ListView都可以包含很多個列表項,列表項的個數完全由資料來源所決定。每一個列表項特定格式的資料又是怎麼載入到檢視介面上的呢?這裡就需要引入資料介面卡。資料介面卡的作用就是把複雜的資料(比如,陣列/連結串列/資料庫/集合……)填充在指定的檢視介面上。(備註 :這裡“指定的資料介面“並不一定是ListView,android給我們提供了很多的控制元件)。
以下例例舉兩種介面卡:
1、ArrayAdapter(陣列介面卡):用於繫結格式單一的資料,資料來源可以是集合或陣列。
2、SimpleAdapter(簡單介面卡):用於繫結格式複雜的資料,資料來源只能是特定泛型的集合。
資料介面卡是連線資料來源與檢視介面的橋樑。
資料介面卡的實現過程非常簡單,只需要三步:新建介面卡------>新增資料來源到介面卡------>檢視載入介面卡
下面來分別看看ListView載入ArrayAdapter(陣列介面卡)和SimpleAdapter(簡單介面卡)的簡單案例:
首先是ArrayAdapter:
public class MainActivity extends Activity { //宣告 private ListView listView; private ArrayAdapter<String>arrayAdapter;//陣列介面卡執行結果如下:private SimpleAdapter simpleAdapter;//簡單介面卡 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView= (ListView) findViewById(R.id.listView);//初始化ListView,繫結檢視 //1、新建資料介面卡 //ArrayAdapter(上下文,當前ListView載入的每一個列表項所對應的佈局檔案,資料來源) //2、介面卡載入資料來源 String[]arrData={"測試資料1","測試資料2","測試資料3","測試資料4"};//資料來源 arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrData); //android.R.layout.simple_list_item_1是android自帶的佈局檔案 //檢視(ListView)載入介面卡 listView.setAdapter(arrayAdapter); } }
SimpleAdapter簡單案例:
public class MainActivity extends Activity { //宣告 private ListView listView; private SimpleAdapter simpleAdapter;//簡單介面卡 private List<Map<String,Object>> dataList;//宣告資料來源的list @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView= (ListView) findViewById(R.id.listView);//初始化ListView,繫結檢視 //1、新建資料介面卡 //SimpleAdapter() /* * context:上下文 * data:資料來源(List<? extends Map<string,?>> data)一個Map所組成的List集合 每一個Map都會對應ListView列表中的一行 每一個Map(鍵-值對)中的鍵必須包含所有在from中所指定的鍵 * resource:列表項的佈局檔案ID * from:Map中的鍵名 * to:繫結檢視中的ID,與from形成對應關係 */ //2、介面卡載入資料來源 dataList=new ArrayList<Map<String,Object>>(); simpleAdapter=new SimpleAdapter(this,getDataList(),R.layout.item,new String[]{"pic","text"},new int[]{R.id.pic,R.id.text}); //android.R.layout.simple_list_item_1是android自帶的佈局檔案 //R.layout.item:自定義列表項樣式(pic + text); //3、檢視(ListView)載入介面卡 listView.setAdapter(simpleAdapter); } //獲取資料來源 private List<Map<String,Object>> getDataList() { for(int i=0;i<20;i++) { Map<String,Object>map=new HashMap<String,Object>(); map.put("pic",R.mipmap.ic_launcher); map.put("text","測試資料"+i); dataList.add(map); } return dataList; } }執行結果: