目前我可以通過groupPosition和childPosition檢查/取消選中複選框,並且工作正常。我將groupPosition和childPosition保存到SQLite數據庫。如何保持ExpandableListView複選框檢查狀態?
當我添加刪除選項,我的複選框檢查狀態關閉/搞砸了。
例如,我有以下幾點:
組別1,
Child1,CHILD2,Child3
我檢查他們的所有3和檢查位置保存到SQLite數據庫。 在數據庫中,檢查的職位將是0,0和0,1和0,2。
後我刪除Child1,
CHILD2變得位置0,Child3變爲1位這會弄亂檢查的狀態。
我試圖找到一種方法來保存組名稱和子名稱,而不是位置的SQLite數據庫中,然後加載在Oncrete方法的名稱。
MainActivity:
if(category_array.get(groupPosition).subcategory_array.get(childPosition).selected) {
category_array.get(groupPosition).subcategory_array.get(childPosition).selected = false;
try{
MySQLITE_DATABASE.deleteRows(groupPosition, childPosition);
}
catch (Exception e) {}
}
else
{
category_array.get(groupPosition).subcategory_array.get(childPosition).selected = true;
MySQLITE_DATABASE.addRow(groupPosition, childPosition);
}
適配器代碼:
private List<Category> mGroupCollection;
if(mGroupCollection.get(groupPosition).subcategory_array.get(childPosition).selected) {
childHolder.checkBox.setBackgroundResource(R.drawable.checkbox_checked);
} else {
childHolder.checkBox.setBackgroundResource(R.drawable.checkbox_unchecked);
}
日期holder類:
public class Category {
public String category_name = null;
public String cat_SelectedChildCount_name;
public ArrayList<SubCategory> subcategory_array = new ArrayList<SubCategory>();
}
//==============================
public class SubCategory {
public String subcategory_name = null;
public boolean selected = false;
}
我想要的位置保存組名和孩子的名字,而不是到SQLite的數據庫,然後在OnCreate方法中加載它們。
我都試過,但它不工作:
String Group_Name = category_array.get(Integer.parseInt(groupPosition)).category_name;
String Child_Name = category_array.get(Integer.parseInt(groupPosition)).
subcategory_array.get(Integer.parseInt(childPosition)).subcategory_name;
if(category_array.get(Group_Name).subcategory_array.get(Child_Name).selected) {
category_array.get(Group_Name).subcategory_array.get(Child_Name).selected = false;
MySQLITE_DATABASE.DeleteRow(Group_Name, Child_Name);
}
else {
category_array.get(Group_Name).subcategory_array.get(Child_Name).selected = true;
MySQLITE_DATABASE.AddRow(Group_Name, Child_Name);
}
我知道我需要改變的adapater代碼,數據持有類和mainactivity爲了使它工作,但我出於想法。我一直在思考和思考,但沒有什麼作品...
有人請請指導我這個?
對於長碼我很抱歉。
謝謝,謝謝。
感謝您的意見。你提到如果有刪除選項,就不要使用該位置。我怎樣才能做到這一點?在我的適配器中,它需要groupPosition和childPosition才能使複選框處於選中狀態或未選中狀態。就child_position - 1而言,我已經考慮過了,但是當我刪除了超過1個childPositions時,我認爲它會表現緩慢。我非常感謝。 – 2014-10-03 18:16:00
是的。它會有點。在你的適配器中,你可以'設置標籤'你想要與列表的每一行關聯的細節。嘗試使用 – 2014-10-04 07:12:30
我不知道如何從setTag和getTag開始。我只給你一個提及child_position = child_position的檢查 - 1.我現在就帶着這個想法,直到我現在瞭解更多關於Android的更好的表現。非常感謝幫助我的朋友。 – 2014-10-05 04:00:13