您好,登錄后才能下訂單哦!
Android ListView里控件添加監聽方法的實例詳解
關于ListView,算是android中比較常見的控件,在ListView我們通常需要一個模板,這個模板指的不是住模塊,而是配置顯示在ListView里面的東西,今天做項目的時候發現想要添加一個ImageView監聽方法,發現崩了,也許是好久沒有動ListView竟然忘了不能直接在主UI的xml文件里面調用其他xml文件的控件,哪怕ListView用的是這個xml文件。
【錯誤示范】:
直接調用ImageView這個控件是ListView的控件,直接在非主控View java類文件調用,直接崩,之前還不知道這個問題。
msg=(ImageView).findViewById(R.id.msg); msg.setOnClickListener(new OnClickListener() { } });
【如何獲取】:
public class CallListen implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { msg=(ImageView)view.findViewById(R.id.msg); msg.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } } } }
在ListView監聽方法里面使用控件的監聽方法,其中最重要的是點擊ListView獲取到了里面所有控件的父類View
這樣的話就可以通過 msg=(ImageView)view.findViewById(R.id.msg);獲取到我們的控件了,這里面的view至關重要,這里面就涉及到一個知識,假如我這個activity setcontentview不是當前我想要使用控件的View怎么辦?
LayoutInflater作用是將layout的xml布局文件實例化為View類對象。
獲取LayoutInflater的方法有如下三種:
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.main, null); LayoutInflater inflater = LayoutInflater.from(context); (該方法實質就是第一種方法,可參考源代碼) View layout = inflater.inflate(R.layout.main, null); LayoutInflater inflater = getLayoutInflater();(在Activity中可以使用,實際上是View子類下window的一個函數) View layout = inflater.inflate(R.layout.main, null);
這時候可能會疑惑:
setContentView 和Inflate
區別:
setContentView()一旦調用, layout就會立刻顯示UI;而inflate只會把Layout形成一個以view類實現成的對象,有需要時再用setContentView(view)顯示出來。一般在activity中通過setContentView()將界面顯示出來,但是如果在非activity中如何對控件布局設置操作了,這就需要LayoutInflater動態加載。
以上就是對Android ListView 添加事件的實例,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。