Android--ListView控件

概述:

(1)ListView:Android中顯示列表的控件

(2)數據適配器: 向控件提供數據源,把複雜的數據填充在指定視圖界面上,是連接數據源和視圖界面的橋樑。

      A. ArrayAdapter :綁定格式單一的數據,數據源可以是集合或數組。

      B. SimpleAdapter:綁定格式複雜的數據,數據源只能是特定泛型的集合。

    適配器的實現:新建適配器——>添加數據源到適配器——>視圖加載適配器。

(I)新建適配器:ArrayAdapter(上下文,當前listView加載的每一個列表項所對應的佈局文件,數據源);

SimpleAdapter(context,data,resource,from,to);

//context: 上下文,this

//data: 數據源(list<? extends Map<String,?>> data)一個Map所組成的List集合,如 List<Map<String,Object>> list;

           每一個Map都對應ListView列表中的一行

           每一個Map(鍵-值對)中的鍵必須包含所有在from中所指定的鍵

自定義一個函數,初始化list,如

private List<Map<String,Object>> getData()

{

for(int i=0;i<20;i++)

Map<String,Object> map=new HashMap<String,Object>();

map.put("PIC",R.drawable.圖片名);

map.put("TEXT","慕課網"+i);

list.add(map);

}

return list;

//resource:列表項的佈局文件ID,新建一個佈局XML文件,佈置每一項(行)的佈局,相當於項的佈局模板,如item.XML,則ID爲R.layout.item

//from: Map中的鍵名,new String[]={"PIC","TEXT"};

//to: 綁定數據視圖中的ID,與from成對應關係 ,item.XML中的ID。如new int[]{R.id.XXX,R.id.YYY}

(II)添加數據源到適配器

String[] arry_data={"慕課網1","www.imooc.com"};

arr_adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arry_data);

(III)視圖加載適配器

listView.setAdapter(arr_adapter);

(3)監聽器 ,程序和用戶(或系統)交互的橋樑,每個監聽器都是一個接口。

實現:讓Activity類繼承實現OnScrollListener、OnItemClickListener接口,並重寫接口的方法,最後讓listView加載這些監聽器,即listView.setOnItemClickListener(this)、listView.setOnScrollListener(this);

  A. OnScrollListener

public void onScrollStateChanged(**,int scrollState)

{

switch(scrollState)

{

case SCROLL_STATE_FLING: //手指離開前 用力滑動,依靠慣性滾動ListView,此時手指已離開屏幕

可以在滾動時做動態添加item項

Map<String,Object> map=new Map<String,Object>();

map.put("PIC",值);

map.put("TEXT",值);

list.add(map);

simp_adapter.notifyDataSetChanged();//通知UI主線程去更新,以適應數據源的變化。

break;

case SCROLL_STATE_IDLE: //ListView停止滑動

break;

case SCROLL_STATE_TOUCH_SCROLL: //ListView正在滑動,手指沒有離開屏幕

break;

}

}

public void onScroll()

{

}

  B. OnItemClickListener

void onItemClick(**,**,position,**)

{

String text=listView.getItemAtPosition(position);

Toast.makeText(this,內容,Toast.LENGTH_SHORT).show();

}

(4)刷新適配器數據

notifyDataSetChanged

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