我正在使用Holoeverywhere库和相应的类:ExpandableListview
,BaseExpandableListAdapter
。
getChildView
的类的 BaseExpandableListAdapter
包含:
checkBox.setText(option.getTitle());
checkBox.setChecked(true);
呈现checkBox
元素时,文本设置正确,但状态仍未选中。为什么不检查?
示例适配器:
/**
* A simple adapter which maintains an ArrayList of photo resource Ids.
* Each photo is displayed as an image. This adapter supports clearing the
* list of photos and adding a new photo.
*
*/
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
// Sample data set. children[i] contains the children (String[]) for groups[i].
private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" };
private String[][] children = {
{ "Arnold", "Barry", "Chuck", "David" },
{ "Ace", "Bandit", "Cha-Cha", "Deuce" },
{ "Fluffy", "Snuggles" },
{ "Goldy", "Bubbles" }
};
public Object getChild(int groupPosition, int childPosition) {
return children[groupPosition][childPosition];
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public int getChildrenCount(int groupPosition) {
return children[groupPosition].length;
}
public android.widget.TextView getGenericView() {
// Layout parameters for the ExpandableListView
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 64);
TextView textView = new TextView(TestActivity.this);
textView.setLayoutParams(lp);
// Center the text vertically
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
// Set the text starting position
textView.setPadding(36, 0, 0, 0);
return textView;
}
public CheckBox getCheckbox() {
// Layout parameters for the ExpandableListView
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 64);
CheckBox checkBox = new CheckBox(TestActivity.this);
checkBox.setLayoutParams(lp);
// Center the text vertically
checkBox.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
// Set the text starting position
checkBox.setPadding(36, 0, 0, 0);
return checkBox;
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
CheckBox checkBox = (CheckBox) convertView;
if(checkBox == null) {
checkBox = getCheckbox();
}
checkBox.setChecked(true);
checkBox.setText(getChild(groupPosition, childPosition).toString());
return checkBox;
}
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
public int getGroupCount() {
return groups.length;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
android.widget.TextView textView = getGenericView();
textView.setText(getGroup(groupPosition).toString());
return textView;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean hasStableIds() {
return true;
}
}
布局位:
<org.holoeverywhere.widget.ExpandableListView
android:id="@+id/expandable_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="multipleChoice"/>
答案 0 :(得分:0)
我不确切知道您的代码有什么问题,但我建议您尝试将CheckBox
更改为CheckedTextView
http://developer.android.com/reference/android/widget/CheckedTextView.html
答案 1 :(得分:0)
您可以尝试声明CheckBox
公开。
答案 2 :(得分:0)
这只是一种可能性,而是尝试checkBox.toggle()