事件監聽、ListView的優化及使用
阿新 • • 發佈:2018-12-11
一、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);