如何在列表视图中访问选中的文本视图?

时间:2011-08-19 18:00:58

标签: android listview checkedtextview

我在列表视图中有一个选中的文本视图,每当我点击列表视图中的一个项目时,随机选中的文本视图都会检查(不一定是我按下的那个)这是我的代码

lv2.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            final CheckedTextView checkedTextView = (CheckedTextView) findViewById(R.id.checkedTextView1);

            checkedTextView.toggle();

        }
    });

其中lv2是我的列表视图,checkedTextView1是我在每个listview项目中的检查视图。如何调用特定的checkedTextView。我可以调用一种数组格式吗?例如checkedTextView[1].toggle();

这里编辑是我的适配器

public class SpecialAdapter2 extends ArrayAdapter<String> {

private int[] colors = new int[] { R.drawable.row_background_grey,
        R.drawable.row_background_white };

public SpecialAdapter2(Context context, int resource, String[] names) {
    super(context, resource, names);
    // TODO Auto-generated constructor stub
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    View view = super.getView(position, convertView, parent);

    int colorPos = position % colors.length;
    view.setBackgroundResource(colors[colorPos]);
    return view;
}

2 个答案:

答案 0 :(得分:1)

尝试将onItemClick()中的代码更改为:

CheckedTextView checkedTextView = (CheckedTextView)arg1.findViewById(R.id.checkedTextView1);
checkedTextView.toggle();

问题是你隐含地在这个上调用findViewById() - 即。你的活动。在您的活动上调用findViewById()将使其在整个视图层次结构中搜索它可以使用id checkedTextView1找到的第一个View。这不是你想要的 - 你想在被点击的行项中找到特定的CheckedTextView。因此需要在arg1上调用findViewById()

答案 1 :(得分:1)

试试这个

final CheckedTextView checkedTextView = (CheckedTextView) arg1;
checkedTextView.toggle();