customlistview.my アダプターのチェックボックスをすべてオフにしたいので、ボタンをクリックすると正常に動作します
これは私のボタンリスナーに書かれています
for(int i = 0; i<listview.getChildCount();i++)
{
v = listview.getChildAt(i);
CheckBox cv =(CheckBox)v.findViewById(R.id.checktitle);
if(cv.isChecked())
{
// cv.setChecked(false);
//listview.setItemChecked(i, false);
toggle(cv);
}
トグル方式で
public void toggle(CheckBox v)
{
if (v.isChecked())
{
v.setChecked(false);
}
else
{
v.setChecked(true);
}
}
アダプタ
public class customAdapter extends ArrayAdapter {
View view=null;
Context context;
ViewHolder holder; boolean checkAll_flag = false;
boolean checkItem_flag = false;
List<CustomDishMenus> dcates=new ArrayList<CustomDishMenus>();
public customAdapter(Context context, int textViewResourceId, List objects) {
super(context, textViewResourceId, objects);
// TODO Auto-generated constructor stub
this.context=context;
this.dcates=objects;
}
static class ViewHolder {
protected TextView text;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
holder = new ViewHolder();
final CustomDishMenus ords=dcates.get(position);
LayoutInflater layoutInflater=(LayoutInflater) getContext().getSystemService(getContext().LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(R.layout.tablayout,parent, false);
if(convertView!=null){
holder.text = (TextView) convertView.findViewById(R.id.title);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.checktitle);
holder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
int getPosition = (Integer) buttonView.getTag();
dcates.get(getPosition).setSelected(buttonView.isChecked());
}
});
convertView.setTag(holder);
convertView.setTag(R.id.title, holder.text);
convertView.setTag(R.id.checktitle, holder.checkbox);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.checkbox.setTag(position); // This line is important.
holder.text.setText(dcates.get(position).getDishName());
holder.checkbox.setChecked(dcates.get(position).isSelected());
return convertView;
}
このコードの問題は、下にスクロールすると6つの子が表示され、再び6つの子が表示されます。子は、ビューに表示される上下にスクロールするとリストビューの項目であるため、表示されるリストビューの項目はリストビューの子です。 .だから私はすべての子のチェックを外したいのですが、このコードでは機能していません。どうすればよいか教えてください。