Проблемы с видоискателем в виде списка с флажком
Я пытаюсь реализовать просмотр списка с помощью флажка. слушатель работает хорошо, я могу видеть, какой элемент выбран, но есть проблема в этом классе, потому что cb.getTag() возвращает ноль.
private class MyCustomAdapter extends ArrayAdapter<TemaRescatado> {
private class ViewHolder {
TextView tema;
CheckBox checkTema;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.item_gen, null);
holder = new ViewHolder();
holder.tema = (TextView) convertView.findViewById(R.id.subtema);
holder.checkTema = (CheckBox) convertView.findViewById(R.id.checktema);
convertView.setTag(holder);
holder.checkTema.setOnClickListener( new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v ;
TemaRescatado temaGen = (TemaRescatado) cb.getTag(); //returns null
temaGen.setSelected(cb.isChecked());
}
});
}
else {
holder = (ViewHolder) convertView.getTag();
}
TemaRescatado temaGen = temaList.get(position);
holder.tema.setText(temaGen.getTema());
holder.checkTema.setChecked(temaGen.isSelected());
holder.tema.setTag(temaGen);
return convertView;
}
}
Может кто-нибудь мне помочь?
1 ответ
Решение
Вы установили тег для своего convertView
который содержит CheckBox и для tema
TextView, но не для самого CheckBox. Таким образом, попытка получить тег для этого CheckBox правильно возвращает ноль.
Просматривая ваш код, вы видите, что вы действительно хотите изменить
holder.tema.setTag(temaGen);
в
holder.checkTema.setTag(temaGen);
Это даст вашему CheckBox temaGen
тег вместо TextView, который в настоящее время получает этот тег.