ListView中的CheckedTextView监听器

时间:2013-01-18 11:34:49

标签: java android

我创建了一个简单的ListView包含checkedTextView。

我想在用户点击listView行

时添加一个监听器

1 - 将检查textView。

2 - 如果列表中有另一个文本视图已选中,则取消选中。

这是我现在写的代码:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ArrayList<String> mStrings = new ArrayList<String>();
        for(int i=0; i<30; i++) {
            mStrings.add("Item " + i);
        }

        setListAdapter( new MultiAdapter(this, mStrings));

        /* Configure ListView */
        ListView lv = getListView();
        lv.setOnItemClickListener(new ItemClick());
    }

    class ItemClick implements OnItemClickListener {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        }
    }

    private class MultiAdapter extends ArrayAdapter<String> {

        private ArrayList<String> mItems;

        public MultiAdapter(Context context, ArrayList<String> mStrings) {
            super(context, R.layout.list2, mStrings);
            this.mItems = mStrings;
        }

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

            View row;

            if (convertView == null)  {
                LayoutInflater inflater = getLayoutInflater();
                row = inflater.inflate(R.layout.list2, parent, false);
            } else
                row = convertView;

            CheckedTextView txt = (CheckedTextView) row.findViewById(R.id.label);

            txt.setText(mItems.get(position));

            return row;
        }
    } 

你能帮我解决一下我需要编码的监听器吗?

我找不到任何关于checkedTextView的教程可以帮助我。如果您了解一些示例代码或教程,请告诉我。

1 个答案:

答案 0 :(得分:5)

如果您想在任何给定时间内只检查最多1次,那么您可以执行以下操作:

  1. 创建int checkedItem;属性。此属性显示当前已检查项目的索引。如果没有选中,则为-1。
  2. ItemClick中设置checkedItem = position。并致电getListAdapter().notifyDataSetChanged()
  3. getView添加txt.setChecked(position == checkedItem)