Android 關於ListView中按鈕監聽的優化問題(方法二)

關於ListView中按鈕監聽的優化問題(方法一)地址:html

http://www.cnblogs.com/steffen/p/3951901.htmlapp

 

以前的方法一,雖然可以解決position的傳遞,可是咱們通常在監聽事件中會常常用到Context和存儲數據的集合ArrayList,若每次都要將這麼多的數據傳遞給Button的話,那個Button的數據量必然會增大。ide

所以,參考方法一咱們能夠將Button的監聽事件寫成Adapter的內部中,方便咱們調用Adapter中的全部數據。廢話很少說,直接上代碼:優化

 1 // ...
 2 
 3 private ButtonClickListener btnClickListener ;
 4 
 5 public ItemAdapter(Context c, ArrayList<Map<String, Object>> appList, int resource, String[] from, int[] to) {
 6     super(c, appList, resource, from, to);
 7   btnClickListener = new ButtonClickListener();  8 }
 9 
10 @Override
11 public View getView(int position, View converView, ViewGroup parentView) {
12     Handler handler = null;
13     View view = convertView;
14     if(convertView == null) {
15         view = LayoutInflater.from(activity).inflate(R.layout.item_list, null);
16         handler= new Handler();
17         handler.button = view.findViewById(R.id.item_list_btn);
18      handler.button.setOnclickListener(btnClickListener);
19 view.setTag(handler); 20 } else { 21 handler = (Handler) view.getTag(); 22 } 23 // ... 24 handler.button.setTag(position); 25   return view; 26 } 27 28 private class ButtonClickListener implements View.OnClickListener { 29 @Override 30 public void onClick(View arg0) { 31 int position = (Integer) ((Button) arg0).getTag(); 32 // ... 33 } 34 } 35 36 private class Handler { 37   Button btn; 38 }
相關文章
相關標籤/搜索