Android入門學習筆記整理(五)

ListView

學習目標:
1.理解 ListView 的基礎使用
2.學會熟練運用兩種適配器( ArrayAdapter SimpleAdapter )
3.學會熟練運用兩種監聽器( OnScrollListener OnItemClickListener )
4.學會熟練運用適配器數據的刷新( notifyDataChanged )

數據適配器
http://www.imooc.com/video/1618
摘自 TowerRush
作用:把數據填充在指定視圖界面上
ArrayAdapter:用於綁定格式單一數據
數據源:集合或者數組
SimpleAdapter:用於綁定格式複雜的數據
數據源:只能是特定泛型的集合
數據適配器是連接數據源和視圖界面的橋樑

實現過程:新建適配器->添加數據源到適配器->視圖加載適配器


ArrayAdapter
http://www.imooc.com/video/1620
摘自 locker

(ArrayAdapter)數據適配器的實現過程:
1.新建適配器
arr_adapter=new ArrayAdapter(上下文(this),當前ListView加載的每一個列表項所對應的佈局文件(android.R.layout.simple_list_item_1),數據源(String[]arr_data={“1”,”2”,”3”,”4”}));
2.添加數據源到適配器(上一步已包含)
3.視圖(ListView)加載適配器
listView.setAdapter(arr_adapter);


SimpleAdapter
http://www.imooc.com/video/1621
摘自 locker
(SimpleAdapter)數據適配器的實現過程:
1.新建適配器
simp_adapter=new SimpleAdapter(context,data,resource,from,to);
context:上下文(this)
data:有特定泛型的集合數據源–一個Map所組成的List集合
(新建自定義List<Map<String,Object>> dataList並通過方法返回在此處—詳見筆記附錄1)
<每一個Map都會去對應列表中的一行
每一個Map中的鍵必須包含所有在from中所指定的鍵>
resource:列表項的佈局文件(自定義佈局)
from:記錄Map中的鍵名(new String[]{佈局文件的name})
to:綁定數據視圖中的ID,與from成對應關係(new int[]{佈局文件中ID})
2.添加數據源到適配器(上一步已包含)
3.視圖(ListView)加載適配器
listView.setAdapter(simp_adapter);

筆記附錄:
1.返回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.ic_launcher);
        map.put("text","BUPT NO."+i);
        dataList.add(map);
    }
    return dataList;
}

ListView—- 監聽器
http://www.imooc.com/video/1622
http://www.imooc.com/video/1623
摘自 i紅姬

1、監聽ListView列表項點擊事件:onItemClick
2、監聽ListView滾動事件,onScrollChangedListener
SCROLL_STATE_FLING -> 用戶在手指離開屏幕之前,由於用力劃了一下,視圖任然依靠慣性,繼續劃了一段距離。
SCROLL_STATE_IDLE -> 視圖已經停止滑動。
SCROLL_STATE_TOUCH_SCROLL -> 手指沒有離開屏幕,手指正帶着屏幕滑動。
如果要動態修改數據,那麼需要adapter.notifyDataSetChanged();如果修改了數據,而沒有通知listview刷新,那麼將會出錯。

實現過程:
摘自 Mr_Yuanxiansheng

  1. Activity中加入接口 OnItemClickListener
  2. 使用ListView加載listView.setOnItemClickListener(this);
  3. 修改onItemClick方法
    String text=listView.getItemAtPosition(position)+"";
    Toast.makeText(<上下文>this,<打印內容>"position"+position+" text="+text,
    <打印時長>Toast.LENGTH_SHORT.show());

事件監聽器(OnScrollListener):監聽滾動時加載數據的事件
實現過程:
1. Activity中加入接口 OnScrollListener
2. 使用ListView加載listView.setOnScrollListener(this);
3. 修改onScrollStateChanged方法

switch(scrollState){
 case SCROLL_STATE_FLING:
 Log.i("Main","用戶在手指離開屏幕之前,由於用力滑了一下,視圖仍依靠慣性繼續滑動");
Map<String,Object>map=new HashMap<String,Object>();
 map.put("pic",R.drawable.ic_launcher);
 map.put("text","增加項");
dataList.add(map);
 simp_adapter.notifyDataSetChanged();//刷新
 break;
 case.SCROLL_STATE_IDLE:
 Log.i("Main","視圖已經停止滑動");
break;
 case:
 Log.i("Main","手指沒有離開屏幕,視圖正在滑動");
break;
 }

筆記附錄:
1.Toast.makeText.show方法:在屏幕下方彈出提示內容(並非窗口)

摘自 慕粉3595949
Toast.makeText(this, "string string string",Toast.LENGTH_LONG).show();
這句的意思:
Toast:是一個類,主要管理消息的提示。
makeText(),是Toast的一個方法,用來顯示信息,分別有三個參數。
第一個參數:this,是上下文參數,指當前頁面顯示
第二個參數:“string string string ”是你想要顯示的內容,也可以是“你好!”。這個是隨便定義的,顯示你想要顯示的內容。
第三個參數:Toast.LENGTH_LONG,是你指你提示消息,顯示的時間,這個是稍微長點兒,對應的另一個是Toast.LENGTH_SHORT,這個時間短點兒,大概2秒鐘。
show(),表示顯示這個Toast消息提醒,當程序運行到這裏的時候,就會顯示出來,如果不調用show()方法,這個Toast對象存在,但是並不會顯示,所以一定不要忘記。


總結
(1)SimpleAdapter的構造方法中參數較多,寫的時候不要着急,要對應好的佈局文件中的id
(2)監聽器和適配器是通用於很多android控件上,不侷限於ListView
(3)本課案例通過onScrollListener監聽了用戶手指滑動的動作,實際上我們常見的列表下拉刷新就是依此擴展的。
(4)熟練運用notifyDatasetchanged,它可以動態更新視圖中所包含的數據。

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