子チェック ボックスを含む展開可能なリスト ビューがあります。チェック ボックスは、ID「check1」で child_helper xml に定義されています。何らかの理由で、複数のチェック ボックスがそれぞれ独立しているのではなく、リンクしているように見えます。たとえば、最初のグループの下で最初の項目を選択すると、そのグループの 3 番目ごとの項目が選択され、残りのすべてのグループでは 2 番目の項目が選択され、2 つスキップして次の項目が選択されます。
グループ 1 の最初の 3 つのアイテムを選択すると、すべてのグループのすべてのアイテムが選択されます。どういうわけか、各子の個別のチェック ボックスではなく、チェック ボックスの 3 つのグループを作成しました。カスタムアダプターで問題が修正されることを示唆する多くのチュートリアルを見てきました。カスタム アダプターを使用していますが、そのすべての機能を使用する方法がわかりません。
おそらく、それぞれの子のチェック ボックスをどのように区別すればよいのでしょうか。
ありがとう
これは私のリスナーのコードです:
expListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Log.d( "Enter_Foods", "onChildClick: "+childPosition );
CheckBox cb = (CheckBox)v.findViewById( R.id.check1 );
if( cb != null )
cb.toggle();
return false;
}
});
}
問題は、アダプターのオーバーライドされたメソッドの 1 つにあると思います。
ExpandableListAdapter foodCategoryExpand = new ExpandableListAdapter() {
@Override
Allitemsenabled()
other override methods...
public Object getChild(int groupPosition, int childPosition) {
switch (groupPosition) {
case 0:
return group1.get(childPosition);
case 1:
return group2.get(childPosition);
case 2:
return group3.get(childPosition);
default:
return null;
}
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildHolder holder;
if (convertView == null) {
holder = new ChildHolder();
LayoutInflater inflator = LayoutInflater.from(Enter_Foods.this);
convertView = inflator.inflate(R.layout.enter_foods_child_helper,null);
holder.tvChild = (TextView) convertView.findViewById(R.id.enter_foods_exp_lay_child);
convertView.setTag(holder);
} else {
holder = (ChildHolder) convertView.getTag();
}
//switch based on which group (main heading) child is in
switch (groupPosition) {
case 0:
holder.tvChild.setText(group1.get(childPosition));
break;
case 1:
holder.tvChild.setText(group2.get(childPosition));
break;
case 2:
holder.tvChild.setText(group3.get(childPosition));
break;
}
return convertView;
}
//create Group (main heading) view
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
GroupHolder holder;
if (convertView == null) {
holder = new GroupHolder();
LayoutInflater inflator = LayoutInflater.from(Enter_Foods.this);
//inflate xml file and then get view from that file
convertView = inflator.inflate(R.layout.enter_foods_group_helper,null);
holder.tvGroup = (TextView) convertView.findViewById(R.id.enter_foods_exp_lay_group);
convertView.setTag(holder);
} else {
holder = (GroupHolder) convertView.getTag();
}
//this actually gets the text we set in onCreate and sets it to the textView (holder)
holder.tvGroup.setText(groupTitle.get(groupPosition));
return convertView;
}
other override methods