有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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

我不确定需要调用什么方法来强制复选框重新绘制/更新自身。我试着打电话给cbview。refreshDrawableState();还有cbview。getCheckMarkDrawable()。使自己无效();但他们似乎什么都没做

    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,
            安卓.R.layout.simple_list_item_checked, options);

然后调用适配器。onItemClick中的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();                 
            }

共 (0) 个答案