我現在在這裏我有同一主題的一些問題,但是任何的,這是爲我工作: When scrolling custom ListView, the checkbox value changes Checkbox gets unchecked when i scroll my custom listview複選框值更改時滾動列表視圖
我可以申請任何這個答案我的代碼:
我的問題是,如果我檢查或取消選中某個複選框並滾動列表視圖,當我回到該項目時沒有他的正確狀態。
有人可以看看我的getView方法,並試圖看看錯誤在哪裏?
在此先感謝。
這是我getView
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.e("ConvertView", String.valueOf(position));
final ViewHolder holder;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.newspaper_list_row, null);
holder = new ViewHolder();
holder.newspaperName = (TextView) convertView.findViewById(R.id.newspaperName);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.checkBox1);
Country country = countryList.get(position);
holder.checkbox.setTag(country.getName());
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.checkbox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
Country country = (Country) cb.getTag();
if (((CheckBox) v).isChecked()) {
holder.checkbox.setChecked(true);
addPreferencesAndDataBase(country.getName(), country.getUrl());
} else {
removePreferencesAndDataBase(country.getName());
holder.checkbox.setChecked(false);
}
}
});
Country country = countryList.get(position);
holder.newspaperName.setText(country.getName());
holder.checkbox.setChecked(country.isSelected());
holder.checkbox.setTag(country);
return convertView;
}
這是我的祖國類:
public class Country {
int id;
String name = null;
String url = null;
boolean selected = false;
public Country(String name, String url, boolean selected) {
super();
this.name = name;
this.url = url;
this.selected = selected;
}
public Country(String name, String url) {
super();
this.name = name;
this.url = url;
}
public long getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
我不明白mCheckBoxes用於什麼,以及爲什麼你在單個複選框的偵聽器中迭代它。 –
mCheckBoxes是一個複選框數組。我用它來設置數據庫中的正確複選框 – Simpson
好的,我可以刪除這段代碼,沒有必要......我只是測試它,但仍然有滾動時的複選框的問題。我只是編輯我的問題 – Simpson