-1
私はチェックボックスとテキストビューのlistViewを持っているダイアログボックスを持っています。私はstName ArraylistをtextViewに表示しました。今私が望むのは、チェックボックスを選択した後で、ダイアログボックスを再度開いたときにチェックされたchecboxが表示されるはずです。ダイアログボックスが開いたらチェックボックスをチェックします
public class StudentNameAdapter extends ArrayAdapter{
Context context;
BaseActivity activity;
ArrayList<String> updatedList,studentId,studentIdUpdated;
ArrayList<CheckModelClass> stName;
public StudentNameAdapter(Context context, BaseActivity activity, ArrayList<CheckModelClass> stName, ArrayList<String> updatedList, ArrayList<String> studentId, ArrayList<String> studentIdUpdated) {
super(context, R.layout.student_name_listview,stName);
this.context = context;
this.stName = stName;
this.activity =activity;
this.updatedList =updatedList;
this.studentId = studentId;
this.studentIdUpdated = studentIdUpdated;
}
private static class ViewHolder {
CheckBox checkbox;
TextView text;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.student_name_listview, parent, false);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.text1);
viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.checkbox);
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag();
stName.get(getPosition).setSelected(buttonView.isChecked());
if(isChecked){
if(studentIdUpdated.contains(studentId.get(getPosition))){
}
else{
updatedList.add(stName.get(getPosition).getName());
studentIdUpdated.add(studentId.get(getPosition));
}
}else
{
updatedList.remove(stName.get(getPosition).getName());
studentIdUpdated.remove(studentId.get(getPosition));
}
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.text1, viewHolder.text);
convertView.setTag(R.id.checkbox, viewHolder.checkbox);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkbox.setTag(position);
viewHolder.text.setText(stName.get(position).getName());
viewHolder.checkbox.setChecked(stName.get(position).isSelected());
return convertView;
}
}
、これは動作しません。あなたの答えは私の質問には関係ありません。私が欲しいのは、いったんチェックボックスを選択してダイアログを閉じることです。私はデイログを開いたときにチェックされるべきです。 –
あなたはviewChangeListnerを使用していますが、これはビューホールダーとは完全には機能しません。ビューホールダーは一度に10行まで格納できるので、スクロールするとcheckdChangeListnerは値をfalseに変更します。 OnClickListnerを使用する理由は、onClickListnerをクリックするだけで動作するためです – kkk