다음과 같이 사용자 지정 어댑터 클래스가 있습니다. 하나의 확인란을 선택하면 다른 확인란도 7-8 행 뒤에 선택됩니다. setonclicklisterner가 구현되지 않은 경우에도 확인란의 동작은 동일합니다. 나는 적절한 해결책이 필요하다. 나는 많은 것을 찾았지만 해결책을 얻지 못했습니다. 여러 확인란을 선택하지 않으려면 어떻게해야합니까?하나의 체크 박스를 선택하면 여러 개의 체크 박스가 선택됩니까?
public class CustomAdapter extends ArrayAdapter<Custom>{
private ArrayList<Custom> entries;
private Activity activity;
private Context context;
private qrusers qrusers;
private String[] udis;
ArrayList<String> userid= new ArrayList<String>();
boolean[] checkBoxState;
LayoutInflater vi;
public CustomAdapter(Context context, ArrayList<Custom> entries,String []udis) {
super(context,0,entries);
this.entries = entries;
this.context= context;
this.udis=udis;
checkBoxState=new boolean[entries.size()];
this.qrusers =(qrusers) context;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public static class ViewHolder{
public TextView item1;
public TextView item2;
public CheckBox chek;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder;
if (v == null) {
v = vi.inflate(R.layout.checkboxlist, null);
holder = new ViewHolder();
holder.item1 = (TextView) v.findViewById(R.id.contactname);
holder.item2 = (TextView) v.findViewById(R.id.companyname);
holder.chek=(CheckBox)v.findViewById(R.id.checboxlist);
holder.chek.setTag(udis[position]);
v.setTag(holder);
/* holder.chek.setOnCheckedChangeListener(new OnCheckedChangeListener() {
private String s;
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
checkBoxState[position]=true;
// isChecked=true;
s=(String)buttonView.getTag();
Log.e("IDDDDDDDD", s);
userid.add(s);
Log.e("ADDED ID", userid.toString());
}
else{
checkBoxState[position]=false;
s=(String)buttonView.getTag();
userid.remove(s);
Log.e("Removed ID", userid.toString());
}
}
});*/
holder.chek.setOnClickListener(new OnClickListener() {
private String s;
@Override
public void onClick(View v) {
if (((CheckBox) v).isChecked()){
checkBoxState[position]=true;
// isChecked=true;
s=(String)v.getTag();
Log.e("IDDDDDDDD", s);
userid.add(s);
Log.e("ADDED ID", userid.toString());
}
else{
checkBoxState[position]=false;
s=(String)v.getTag();
userid.remove(s);
Log.e("Removed ID", userid.toString());
}
}
});
holder.chek.setChecked(checkBoxState[position]);
CheckBox result = (CheckBox)convertView;
if (result == null) {
result = new CheckBox(context);
}}
else
holder=(ViewHolder)v.getTag();
final Custom custom = entries.get(position);
if (custom != null) {
holder.item1.setText(custom.getcustomBig());
holder.item2.setText(custom.getcustomSmall());
}
return v;
}
public ArrayList<String> getUserid() {
return userid;
}
public void setUserid(ArrayList<String> userid) {
this.userid = userid;
}
}
체크 상자의 값을 배열에 저장하여이 튜토리얼을 사용해보십시오. http://sunil-android.blogspot.in/2013/04/android-listview-checkbox-example.html –