您好,登錄后才能下訂單哦!
這篇文章主要介紹ListView如何添加item的事件監(jiān)聽,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
1. 點擊事件(OnItemClickListener)
onItemClick(AdapterView<?> parent, View view, int position, long id)
parent:官方解釋為:The AdapterView where the click happened,也就是用戶所點擊的AdapterView,這個參數(shù)一般不用。
view:當(dāng)前點擊的列表項所對應(yīng)的布局View對象,可通過這個參數(shù)獲得相應(yīng)的列表項內(nèi)部的組件,進(jìn)而對其進(jìn)行操作。舉個例子,假設(shè)有一個ListView,含有4個列表項,你點了第2個,那么通過view你就可以操作第2個列表項里面的TextView、ImageView等等的組件(假設(shè)存在)。
position:當(dāng)前點擊的列表項的位置,從0開始,也就是點擊第n個,position就是n-1。
id:當(dāng)前點擊的列表項的序號,也是從0開始,所以大部分時候position和id是一樣的,至于這兩個參數(shù)之間有什么不同,有興趣的童鞋可以深究一下。
public class MainActivity extends Activity implements AdapterView.OnItemClickListener{ private ListView myListView; private SimpleAdapter simpleAdapter; private List<Map<String, Object>> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); data = new ArrayList<Map<String, Object>>(); simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.text}); myListView = (ListView) findViewById(R.id.myListView); //設(shè)置監(jiān)聽器 myListView.setAdapter(simpleAdapter); myListView.setOnItemClickListener(this); } private List<Map<String, Object>> getData() { for (int i = 0; i < 20; i++) { Map<String, Object>map = new HashMap<String, Object>(); map.put("img", R.mipmap.ic_launcher); map.put("text", "初始simpleAdapter"+(i+1)); data.add(map); } return data; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //通過view獲取其內(nèi)部的組件,進(jìn)而進(jìn)行操作 String text = (String) ((TextView)view.findViewById(R.id.text)).getText(); //大多數(shù)情況下,position和id相同,并且都從0開始 String showText = "點擊第" + position + "項,文本內(nèi)容為:" + text + ",ID為:" + id; Toast.makeText(this, showText, Toast.LENGTH_LONG).show(); } }
2. 滾動事件(OnScrollListener)
void onScrollStateChanged(AbsListView view, int scrollState)
監(jiān)聽滾動狀態(tài)的變化。
view:正在被滾動的視圖,也就是當(dāng)前的ListView。
scrollState:滾動狀態(tài),分別有以下幾種:
SCROLL_STATE_TOUCH_SCROLL:滑動狀態(tài),手指在視圖滑動,并且手指一直停留在屏幕上而未離開。
SCROLL_STATE_FLING:投擲狀態(tài),手指在離開視圖前,用力劃了一下(想象將視圖投擲出去的感覺),視圖會按照慣性滑動至停止。
SCROLL_STATE_IDLE:閑置狀態(tài),什么都沒做的狀態(tài)。當(dāng)投擲狀態(tài)或觸摸滾動狀態(tài)結(jié)束時,進(jìn)入閑置狀態(tài)。
void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
監(jiān)聽非滾動狀態(tài),只要ListView不滾動,就會被不斷調(diào)用。
view:正在被滾動的視圖,也就是當(dāng)前的ListView。
firstVisibleItem:已加載的第一個列表項的索引值。
visibleItemCount:已加載的列表項的總數(shù)。
totalItemCount:適配器中數(shù)據(jù)源對應(yīng)的列表項總數(shù)。
public class MainActivity extends Activity implements AbsListView.OnScrollListener{ private ListView myListView; private SimpleAdapter simpleAdapter; private List<Map<String, Object>> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); data = new ArrayList<Map<String, Object>>(); simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.text}); myListView = (ListView) findViewById(R.id.myListView); myListView.setAdapter(simpleAdapter); //設(shè)置監(jiān)聽器 myListView.setOnScrollListener(this); } private List<Map<String, Object>> getData() { for (int i = 0; i < 20; i++) { Map<String, Object>map = new HashMap<String, Object>(); map.put("img", R.mipmap.ic_launcher); map.put("text", "初始simpleAdapter"+(i+1)); data.add(map); } return data; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { //投擲狀態(tài) case SCROLL_STATE_FLING: Toast.makeText(this, "SCROLL_STATE_FLING", Toast.LENGTH_SHORT).show(); break; //閑置狀態(tài) case SCROLL_STATE_IDLE: Toast.makeText(this, "SCROLL_STATE_IDLE", Toast.LENGTH_SHORT).show(); break; //滑動狀態(tài) case SCROLL_STATE_TOUCH_SCROLL: Toast.makeText(this, "SCROLL_STATE_TOUCH_SCROLL", Toast.LENGTH_SHORT).show(); break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // Toast.makeText(this, "滾動已停止,已加載的第一項的索引為:" + firstVisibleItem + // ",已加載的列表項總數(shù)為:" + visibleItemCount + ",存在的列表項總數(shù)為:" + // totalItemCount, Toast.LENGTH_LONG).show(); } }
以上是“ListView如何添加item的事件監(jiān)聽”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。