2015年12月26日 星期六

Android-ListView 和 CheckBox 問題

不知道是否有大大遇過類似以下情況 :
比如有 30 筆資料
點選第 1 筆後
竟然在 2X 筆突然出現被勾選的狀態
 If you check first checkbox and slide down, Actually the twentieth checkbox
was checked.

解決辦法 :
1 . 把被點選的位置記錄下來
2 . 生成 CheckBox 時去判斷是否要被勾選

import java.util.HashMap;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter{

    private HashMap<Integer, Boolean> hashMap = new HashMap<Integer,Boolean>();
    .
    .
    .
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Elements elements = null;  

        if (convertView == null) {  
            .
            .
            .
        } else {  
            .
            .
            .
        }  
        
        elements.checkBox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked)
                {  
                    hashMap.put(position, isChecked);
                }else{
                    hashMap.remove(position);
                }                
            }});
        elements.checkBox1.setChecked(hashMap.get(position)==null? false : true);
        
        return convertView; 
    }

}



參考資料 : ListView点击checkbox其他checkbox也被同时选中的问题

沒有留言:

張貼留言