Android CheckedTextView复选框UI在下次单击之前不会刷新

时间:2013-04-29 23:27:33

标签: java android mobile

我有一个CheckedTextView,复选框在下次点击之前不会刷新。

我的活动是扩展Activity而不是ListActivity,因为我在布局中有一个listView和按钮。

我正在设置ListView ItemClickListener,如下所示。问题是复选框在单击另一个项目之前不会显示为“已选中”。所以我单击第3行,然后单击第4行和第3行高亮显示。单击第10行,最后第4行突出显示。当我说“突出显示”时,我的意思是复选框变为绿色。

我不确定需要调用哪种方法来强制复选框重绘/更新自身。我试过调用cbview.refreshDrawableState();和cbview.getCheckMarkDrawable()。invalidateSelf();在setChecked之后,他们似乎什么也没做。

    listView
        .setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CheckedTextView cbview = (CheckedTextView)view;
                boolean checked = cbview.isChecked();
                cbview.setChecked(!checked);
                Log.d("Test", "clicked:" + position + " : " + id);
            }

        });

更新:答案:

必须让我的适配器最终:

    final ArrayAdapter<MyOption> adapter = new ArrayAdapter<MyOption>(this,
            android.R.layout.simple_list_item_checked, options);

然后在onItemClick:

中调用adapter.notifyDataSetChanged()
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,  int position, long id) {                 
                CheckedTextView cbview = (CheckedTextView)view;
                boolean checked = cbview.isChecked();
                cbview.setChecked(!checked);
                Log.d("Test", "clicked:" + position + " : " + id + ":" + cbview.isChecked());
                adapter.notifyDataSetChanged();                 
            }

1 个答案:

答案 0 :(得分:0)

你试过吗

    listViewAdapater.notifyDataSetChanged();
相关问题