listview row having multiple checkboxex, when i checked the checkboxex then if i scroll the listview, its automatically unchecked the checkboxes. how can fix this issue. here is my getView method
public View getView(final int position, View convertView, ViewGroup parent) {
final QuestionRadioHolder questionRadioHolder;
final QuestionCheckboxHolder questionCheckboxHolder;
final Model rowItem = getItem(position);
final int type = getItemViewType(position);
if (type == TYPE1) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.radio_layout, parent, false);
questionRadioHolder = new QuestionRadioHolder();
questionRadioHolder.txtQuestion = (TextView) convertView.findViewById(R.id.txtQue);
questionRadioHolder.rg = (RadioGroup) convertView.findViewById(R.id.rg);
Typeface face = Typeface.createFromAsset(getContext().getAssets(), "fonts/Raleway-SemiBold.ttf");
questionRadioHolder.txtQuestion.setTypeface(face);
convertView.setTag(questionRadioHolder);
} else {
questionRadioHolder = (QuestionRadioHolder) convertView.getTag();
}
List<String> arrayList = rowItem.getArrayList();
questionRadioHolder.txtQuestion.setText(rowItem.getQuestionText());
questionRadioHolder.rg.removeAllViews();
questionRadioHolder.rg.clearCheck();
for (int i = 0; i < arrayList.size(); i++) {
RadioButton radioButton = new RadioButton(getContext());
radioButton.setId(i);
radioButton.setTextSize(12);
radioButton.setText(arrayList.get(i));
radioButton.setTypeface(face1);
questionRadioHolder.rg.addView(radioButton);
}
// questionRadioHolder.rg.removeAllViews();
questionRadioHolder.rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup rg, int checkedId) {
for (int i = 0; i < rg.getChildCount(); i++) {
RadioButton btn = (RadioButton) rg.getChildAt(i);
ArrayList<String> list = new ArrayList<String>();
if (btn.getId() == checkedId) {
String text = btn.getText().toString();
int id = mList.get(position).getQuid();
System.out.println(position + " position 2");
map.put(id, text);
list.add(0, text);
aMap1.put(id, list);
Log.d("radio", text);
Log.d("Queid:", "" + id);
return;
}
}
}
});
} else if (type == TYPE2) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.checkbox_layout, parent, false);
questionCheckboxHolder = new QuestionCheckboxHolder();
questionCheckboxHolder.txtQuestionChk = (TextView) convertView.findViewById(R.id.chkQues);
questionCheckboxHolder.relativeLayout = (LinearLayout) convertView.findViewById(R.id.chkrl2);
Typeface face = Typeface.createFromAsset(getContext().getAssets(), "fonts/Raleway-SemiBold.ttf");
face1 = Typeface.createFromAsset(getContext().getAssets(), "fonts/Raleway-Regular.ttf");
questionCheckboxHolder.txtQuestionChk.setTypeface(face);
convertView.setTag(questionCheckboxHolder);
} else {
questionCheckboxHolder = (QuestionCheckboxHolder) convertView.getTag();
}
List<String> arrayList = rowItem.getArrayList();
questionCheckboxHolder.txtQuestionChk.setText(rowItem.getQuestionText());
questionCheckboxHolder.relativeLayout.removeAllViews();
for (int i = 0; i < arrayList.size(); i++) {
checkBox = new CheckBox(getContext());
checkBox.setId(i);
checkBox.setMinHeight(30);
checkBox.setMinimumWidth(30);
checkBox.setText(arrayList.get(i));
checkBox.setTypeface(face1);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int position = (Integer) buttonView.getTag();
ArrayList<String> arraylist2 = new ArrayList<String>();
ArrayList<String> list = new ArrayList<String>();
int id = mList.get(position).getQuid();
arraylist2 = aMap1.get(id);
System.out.println(arraylist2);
if (arraylist2 == null) {
arraylist2 = list;
}
if (buttonView.isChecked()) {
arraylist2.add(buttonView.getText().toString());
aMap1.put(id, arraylist2);
} else {
arraylist2.remove(buttonView.getText().toString());
aMap1.put(id, arraylist2);
}
System.out.println(aMap1.get(id));
}
});
questionCheckboxHolder.relativeLayout.addView(checkBox);
}
}
return convertView;
}
If i scroll the listview, its automatically unchecked the checkbox, how can checked the checkbox.
Save your check list in
ArrayList<Boolean>
, and load it ingetView()
: