Проблемы с видоискателем в виде списка с флажком

Я пытаюсь реализовать просмотр списка с помощью флажка. слушатель работает хорошо, я могу видеть, какой элемент выбран, но есть проблема в этом классе, потому что 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, который в настоящее время получает этот тег.

Другие вопросы по тегам