утилизация getView забывает просматривать состояния

1

моя проблема заключается в том, что у меня есть список с флажками, видимость которых исчезает, когда выбрана кнопка очистки. checkboxes становятся видимыми. Я просматриваю состояния флажков, но проблема в том, что когда флажок установлен, он вызывает onCheckChange() и выполняет работу по настройке состояния, но когда мой просмотр повторяет его снова setChecked в состояния магазинов и снова вызывает мой onCheckChanged, и я не знаю, почему, когда я прокручивает резервную копию, он не восстанавливает мои проверенные состояния... это мой код

public View getView(int position,View convertView,ViewGroup parent)
    {
        final int currentPosition=position;

        View row=convertView;

        if(row==null)
        {
            LayoutInflater inflater=((Activity)context).getLayoutInflater();
            row=inflater.inflate(layoutResourceId, parent,false);
            holder=new Feedbacks();
            holder.lvGuestName=(TextView)row.findViewById(R.id.guestName);
            holder.checkBox=(CheckBox)row.findViewById(R.id.clearCheck);


            row.setTag(holder);

        }       
        else
        {               
            holder=(Feedbacks)row.getTag();             
        }

        if(showCheckbox)
        {
            holder.checkBox.setVisibility(View.VISIBLE);        
        }
        else
        {
            holder.checkBox.setVisibility(View.GONE);
        }
        holder.lvGuestName.setText(feedbackList.get(position).getGuestName());          
        holder.checkBox.setChecked(checks.get(position));
        holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                if(isChecked)
                {
                    checks.put(currentPosition, true);

                }
                else
                {
                    checks.put(currentPosition, false);             
                }

            }                   

        }); 
        return row;                                     

    }
Теги:
android-listview

1 ответ

0

Попробуйте использовать это.

holder.checkBox.setTag(position);

holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            Integer currentPosition = Integer.parseInt(buttonView.getTag().toString());
            if(isChecked)
            {
                checks.put(currentPosition, true);

            }
            else
            {
                checks.put(currentPosition, false);             
            }

        }                   

    }); 

Также нет необходимости использовать новую строку "Просмотр". Повторно используйте convertView вместо строки и верните его. Вы теряете память, используя View здесь. Поэтому просто повторно используйте convertView.

  • 0
    я решил это ... в любом случае спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню