ListView-添加item的事件監(jiān)聽實(shí)例
1. 點(diǎn)擊事件(OnItemClickListener)
onItemClick(AdapterView<?> parent, View view, int position, long id)
parent:官方解釋為:The AdapterView where the click happened,也就是用戶所點(diǎn)擊的AdapterView,這個(gè)參數(shù)一般不用。
view:當(dāng)前點(diǎn)擊的列表項(xiàng)所對(duì)應(yīng)的布局View對(duì)象,可通過(guò)這個(gè)參數(shù)獲得相應(yīng)的列表項(xiàng)內(nèi)部的組件,進(jìn)而對(duì)其進(jìn)行操作。舉個(gè)例子,假設(shè)有一個(gè)ListView,含有4個(gè)列表項(xiàng),你點(diǎn)了第2個(gè),那么通過(guò)view你就可以操作第2個(gè)列表項(xiàng)里面的TextView、ImageView等等的組件(假設(shè)存在)。
position:當(dāng)前點(diǎn)擊的列表項(xiàng)的位置,從0開始,也就是點(diǎn)擊第n個(gè),position就是n-1。
id:當(dāng)前點(diǎn)擊的列表項(xiàng)的序號(hào),也是從0開始,所以大部分時(shí)候position和id是一樣的,至于這兩個(gè)參數(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) {
//通過(guò)view獲取其內(nèi)部的組件,進(jìn)而進(jìn)行操作
String text = (String) ((TextView)view.findViewById(R.id.text)).getText();
//大多數(shù)情況下,position和id相同,并且都從0開始
String showText = "點(diǎn)擊第" + position + "項(xiàng),文本內(nèi)容為:" + text + ",ID為:" + id;
Toast.makeText(this, showText, Toast.LENGTH_LONG).show();
}
}
2. 滾動(dòng)事件(OnScrollListener)
void onScrollStateChanged(AbsListView view, int scrollState)
監(jiān)聽滾動(dòng)狀態(tài)的變化。
view:正在被滾動(dòng)的視圖,也就是當(dāng)前的ListView。
scrollState:滾動(dòng)狀態(tài),分別有以下幾種:
SCROLL_STATE_TOUCH_SCROLL:滑動(dòng)狀態(tài),手指在視圖滑動(dòng),并且手指一直停留在屏幕上而未離開。
SCROLL_STATE_FLING:投擲狀態(tài),手指在離開視圖前,用力劃了一下(想象將視圖投擲出去的感覺(jué)),視圖會(huì)按照慣性滑動(dòng)至停止。
SCROLL_STATE_IDLE:閑置狀態(tài),什么都沒(méi)做的狀態(tài)。當(dāng)投擲狀態(tài)或觸摸滾動(dòng)狀態(tài)結(jié)束時(shí),進(jìn)入閑置狀態(tài)。
void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
監(jiān)聽非滾動(dòng)狀態(tài),只要ListView不滾動(dòng),就會(huì)被不斷調(diào)用。
view:正在被滾動(dòng)的視圖,也就是當(dāng)前的ListView。
firstVisibleItem:已加載的第一個(gè)列表項(xiàng)的索引值。
visibleItemCount:已加載的列表項(xiàng)的總數(shù)。
totalItemCount:適配器中數(shù)據(jù)源對(duì)應(yīng)的列表項(xià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;
//滑動(dòng)狀態(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, "滾動(dòng)已停止,已加載的第一項(xiàng)的索引為:" + firstVisibleItem +
// ",已加載的列表項(xiàng)總數(shù)為:" + visibleItemCount + ",存在的列表項(xiàng)總數(shù)為:" +
// totalItemCount, Toast.LENGTH_LONG).show();
}
}
以上這篇ListView-添加item的事件監(jiān)聽實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決Kotlin 類在實(shí)現(xiàn)多個(gè)接口,覆寫多個(gè)接口中相同方法沖突的問(wèn)題
這篇文章主要介紹了解決Kotlin 類在實(shí)現(xiàn)多個(gè)接口,覆寫多個(gè)接口中相同方法沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
淺析Android企業(yè)級(jí)開發(fā)數(shù)據(jù)綁定技術(shù)
這篇文章通過(guò)代碼實(shí)例分析了Android企業(yè)級(jí)開發(fā)數(shù)據(jù)綁定技術(shù)的應(yīng)用以及相關(guān)的原理知識(shí),跟著小編一起學(xué)習(xí)參考下吧。2017-12-12
一文帶你了解Android?Flutter中Transform的使用
flutter的強(qiáng)大之處在于,可以對(duì)所有的widget進(jìn)行Transform,因此可以做出非??犰诺男Ч1疚木蛠?lái)大家了解一下Transform的具體使用,感興趣的可以了解一下2023-01-01
Android?懸浮窗開發(fā)示例((動(dòng)態(tài)權(quán)限請(qǐng)求?|?前臺(tái)服務(wù)和通知?|?懸浮窗創(chuàng)建?)
本文介紹了Android懸浮窗的實(shí)現(xiàn)效果,包括動(dòng)態(tài)權(quán)限請(qǐng)求、前臺(tái)服務(wù)和通知的使用,懸浮窗權(quán)限需要?jiǎng)討B(tài)申請(qǐng)并引導(dǎo)用戶手動(dòng)開啟,前臺(tái)服務(wù)用于保證懸浮窗的持續(xù)存活,支持Android不同版本的兼容性,文章還提供了啟動(dòng)前臺(tái)服務(wù)、創(chuàng)建通知和懸浮窗的代碼示例,感興趣的朋友一起看看吧2025-02-02
Android實(shí)現(xiàn) Shape屬性gradient 漸變效果
這篇文章主要介紹了Android 實(shí)現(xiàn)Shape屬性gradient 漸變效果,gradient用以定義漸變色,可以定義兩色漸變和三色漸變,及漸變樣式,具體實(shí)現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧2019-11-11
edittext + listview 實(shí)現(xiàn)搜索listview中的內(nèi)容方法(推薦)
下面小編就為大家?guī)?lái)一篇edittext + listview 實(shí)現(xiàn)搜索listview中的內(nèi)容方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Android編程中號(hào)碼匹配位數(shù)修改的方法
這篇文章主要介紹了Android編程中號(hào)碼匹配位數(shù)修改的方法,涉及Android編程中參數(shù)修改的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android編程實(shí)現(xiàn)為L(zhǎng)istView創(chuàng)建上下文菜單(ContextMenu)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)為L(zhǎng)istView創(chuàng)建上下文菜單(ContextMenu)的方法,簡(jiǎn)單分析了上下文菜單的功能及ListView創(chuàng)建上下文菜單(ContextMenu)的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02

