[英]How to check a checkbox if it is checked prevoiusly
我已經實現了列表中的復選框,有一個帶有復選框的名稱。 我的問題是,我將選擇五個名稱並顯示這些名稱,此后,如果我返回列表,則應再次檢查這五個名稱,因為我已經選擇了這些名稱。
但是現在,當我重新訪問時,這些都沒有被選中 。 如何實現這一目標。
我的適配器代碼。
holder.UserId_Fk.setText(tempValues.getUserId_Fk().toString());
holder.chkbox.setOnCheckedChangeListener(null);
holder.chkbox.setChecked(checkedHolder[position]);
Log.i(TAG, "Position " + checkedHolder[position]);
if (checkedHolder[position])
holder.chkbox.setChecked(true);
else
holder.chkbox.setChecked(false);
holder.chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
checkedHolder[position] = isChecked;
Log.i(TAG, "Position " + checkedHolder[position]);
}
});
我的活動代碼..
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
CheckBox cb = (CheckBox) view.findViewById(R.id.chkbox);
cb.performClick();
if (cb.isChecked()) {
for (int i = 0; i < adapter.getCount(); i++) {
if (adapter.checkedHolder[i]) {
// get all name values that checked by user
MemberName.clear();
MemberName.add(ItemsArr.get(i).getItemName().toString());
cb.setChecked(true);
Log.i(TAG, "Name " + MemberName);
// Name = ItemsArr.get(i).getItemName().toString();
//Log.i(TAG, "Name " + Name);
}
}
} else if (!cb.isChecked()) {
}
}
});
除非將狀態存儲在某個位置,否則每次返回列表時,它將被視為新實例。 結果,所有框都將恢復為未選中狀態。
當您離開列表時,將檢查的值保存到某種持久性存儲(例如設備存儲)中,或將框的狀態傳遞到您要訪問的屏幕,以便在導航時可以將其傳遞回列表背部。 或者將它們保存到具有全局范圍的變量,並且在移動屏幕時不會超出范圍。
當您返回列表時,請查看是否存在要使用的狀態(在設備存儲中,作為參數傳遞或使用任何持久性方式),然后使用它重新檢查相應的框。
嘗試這個。 我已經編輯了您的代碼
private static Map<Integer, Boolean> mapCheck = new HashMap<Integer, Boolean>();
holder.UserId_Fk.setText(tempValues.getUserId_Fk().toString());
holder.chkbox.setOnCheckedChangeListener(null);
holder.chkbox.setChecked(checkedHolder[position]);
Log.i(TAG, "Position " + checkedHolder[position]);
if (checkedHolder[position])
holder.chkbox.setChecked(true);
else
holder.chkbox.setChecked(false);
holder.chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mapCheck.put(position, true);
checkedHolder[position] = isChecked;
Log.i(TAG, "Position " + checkedHolder[position]);
}
});
和這個:
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
CheckBox cb = (CheckBox) view.findViewById(R.id.chkbox);
cb.performClick();
if (cb.isChecked()) {
/*
for (int i = 0; i < adapter.getCount(); i++) {
if (adapter.checkedHolder[i]) {
// get all name values that checked by user
MemberName.clear();
MemberName.add(ItemsArr.get(i).getItemName().toString());
cb.setChecked(true);
Log.i(TAG, "Name " + MemberName);
// Name = ItemsArr.get(i).getItemName().toString();
//Log.i(TAG, "Name " + Name);
} */
//SEARCH POSITION WHERE ARE TRUE
for(Integer i : mapCheck.keySet())
{
if(mapCheck.get(i) == true)
{
cb.setChecked(true);
}
}
}
} else if (!cb.isChecked()) {
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.