Android-CheckedTextView检查错误的元素

Android-CheckedTextView检查错误的元素,android,listview,checkedtextview,Android,Listview,Checkedtextview,当我检查第一个元素(位置0)时,它会被检查,但当我向下滚动listview时,下一个“部分”的第一个位置也会被检查,这会一直向下。例如,我有100个元素,我检查位置0,然后位置10,20,30,40等等也被检查。如何处理这类问题 提前感谢。这是因为listview回收了它的视图,所以它保留了一个可重用的视图池。我通常使用的模式是: @Override public View getView(final int position, View convertView, ViewGroup p

当我检查第一个元素(位置0)时,它会被检查,但当我向下滚动listview时,下一个“部分”的第一个位置也会被检查,这会一直向下。例如,我有100个元素,我检查位置0,然后位置10,20,30,40等等也被检查。如何处理这类问题


提前感谢。

这是因为listview回收了它的视图,所以它保留了一个可重用的视图池。我通常使用的模式是:

@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;
    }
if (this row need to be checked)
        check it
else
        force uncked it