1. 程式人生 > >事件監聽、ListView的優化及使用

事件監聽、ListView的優化及使用

一、ListView的優化&使用

ListView的優化:ListView的優化主要包括兩個方面,分別是對自身的優化以及其介面卡(Adapter)的優化。 1、使用ViewHolder模式來提高效率 Viewholder模式充分了ListView的檢視快取機制,避免了每次在呼叫getView的時候都去通過findViewById例項化資料。

2、非同步載入:耗時的操作放在非同步執行緒中 如果在adapter中的某些操作需要耗費大量的時間,個時候就要用到非同步執行緒來進行非同步就在資料。 a.一種是通過多執行緒方式通過Handler+Message進行非同步載入 b.另一種是通過AsyncTask來進行非同步操作

3、listView錯位載入問題

ListView的使用 (1)ListView 分割線的高度和顏色設定。 android:pider:設定顏色,背景 android:piderHeight:設定高度 如果設定無分割線,可以設定android:pider="@null"。 該兩個屬性必須同時使用,如果只設置pider,則沒有效果,同時預設的分割線也會消失。 (2)ListView的滾動 (3)隱藏ListView 的滾動條 android:scrollbars=“none” (4)取消ListView的點選反饋效果 android:listSelector="#0000":點選顏色設定為透明 (5)ListView 下拉頂部空白回彈效果 (6)ListView 的上拉載入和下拉重新整理

二、事件監聽的優化

  假設Item中有三個按鈕,要為三個按鈕定義事件,如果是下面這樣
  btn1.setOnclickListener(new View.onClickListener(){
     public void onClick(View view){
         //...
     }
  });
  btn2.setOnclickListener(new View.onClickListener(){
     public void onClick(View view){
         //...
     }
  });
  btn3.setOnclickListener(new View.onClickListener(){
     public void onClick(View view){
         //...
     }
  });
  如果每屏顯示10個Item,那一共建立了30個listener物件在記憶體中。
  如果,你是在Adapter建立時,只建立一個Listener,並將其定義成全域性屬性,然後通過按鈕的ID來進行判斷是哪個事件應該觸發,
  class MyAdapter extends BaseAdapter{
     View.onClickListener myListener = new View.onClickListener(){
       public void onClick(View view){
         if(view.getId() == R.id.btn1){
           //...
         }else if(view.getId() == R.id.btn2){
           //...
         }else if(view.getId() == R.id.btn3){
           //...
         }
       }
     });
    }

    //註冊監聽器
    btn1.setOnclickListener(myListener);
    btn2.setOnclickListener(myListener);
    btn3.setOnclickListener(myListener);