目前我可以通过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