Android - CheckedTextView проверяет неправильный элемент - PullRequest
0 голосов
/ 15 октября 2011
@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View v = convertView;

        if(v == null){
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.country_row, null);
        }

        Country item = getItem(position);

        TextView tv1 = (TextView) v.findViewById(R.id.country);
        final CheckedTextView ctv = (CheckedTextView) v.findViewById(R.id.checked);
        ctv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ctv.toggle();
                Country country = (Country) listView.getItemAtPosition(position);
                Log.d("daim", country.getCountry() + " " + country.getCode());
                //listView.getCheckItemIds();
            }
        });

        tv1.setText(item.getCountry());

        return v;
    }

Когда я проверяю, скажем, первый элемент (позиция 0), он проверяется, но когда я прокручиваю вниз по списку, также проверяется первая позиция следующего «раздела», это продолжается до самого конца. Например, у меня есть 100 элементов, и я проверяю позицию 0, затем также проверяются позиции 10, 20, 30, 40 и т.д. Как справиться с такой проблемой?

Заранее спасибо.

1 Ответ

2 голосов
/ 15 октября 2011

это потому, что просмотр списка перезаписывает свой вид, поэтому он сохраняет пул представлений, который можно использовать повторно. Шаблон, который я обычно использую:

if (this row need to be checked)
        check it
else
        force uncked it
...