android listview adapter中設置點擊直接position被重用問題解決

Android 爲了保持性能的高效  會在adapter中重用 convertView 相信這個有點經驗的Android開發同學都知道

但在項目裏 比如在一個listview 中 添加點擊的時間 需要獲得一個item的 position 可當這個item被複用了之後 在觸發點擊事件  雖然事件被觸發了但是並不能知道這個item 是那個view 因爲 它被複用了 相應的的這個position 也被複用了

這就會引起 position錯位現象 爲了解決這個問題 的思路類似在listadapter中使用viewholder一樣 需要設置一個tag來將position保存起來並將保存的convertview 和 保存的position 對應即可

具體如下需要 自定義一個onclicklistner()自定義的點擊事件如下:

package com.sohu.focus.middleware.adapter;


import android.view.View;
import android.view.View.OnClickListener;


public abstract class OnConvertViewClickListener implements OnClickListener {


    private View convertViews;
    private int[] positionIds;
    public OnConvertViewClickListener(View convertView, int... positionIds) {
        this.convertViews = convertView;
        this.positionIds = positionIds;
    }


    @Override
    public void onClick(View v) {
        int len = positionIds.length;
        int[] positions = new int[len];
        for(int i = 0; i < len; i++){
            positions[i] = (Integer) convertViews.getTag(positionIds[i]);
        }
        onClickCallBack(v, positions);
    }


    public abstract void onClickCallBack(View registedView, int... positionIds);


}

設置需要點擊時間的點擊監聽

convertView.setTag(R.id.tag_position, position); 

並將position 重新保存到tag中 即可

在設置點擊時間的監聽的時間 將item和position的id傳入 進行對應

setOnClickListener(new OnConvertViewClickListener(convertView, R.id.tag_position)


類似的方法 也可以 用力處理 listView異步加載圖片出現圖片錯位的現象

我每一個圖片保存一個tag 當tag相等時加載圖片 否則就不加載 

具體可參加如下博客

http://www.cnblogs.com/tiantianbyconan/p/3992843.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章