android - 复选框未更改 UI 中的选中状态?

标签 android listview checkbox android-arrayadapter

我有一个 ListView,我正尝试将其与可检查的项目列表一起使用。我在 ArrayAdaptor 的列表项类上调用 toggle() 方法,但未在 UI 中勾选复选框。但是,我可以确认在 UI 中选择了正确的项目,并且“isChecked()”状态报告正确——只是 UI 根本没有改变。是否需要调用任何特殊方法来更新 UI 的复选框图形?

换句话说——我如何以编程方式告诉 UI 复选框应该显示为“已选中”?看起来这应该是一个非常简单的过程,但我一直很难找到这些信息。

代码如下:

对于 ArrayAdaptor 中的项目数据类:

public class SelectedItemData extends CheckedTextView {

        public String _item_name;
        public String getItemName()
        {
            return _item_name;
        }
        public void setItemName(String in_name)
        {
            _item_name = in_name;
        }

        // methods

        public SelectedItemData(Context context) {
            super(context);
            init();
        }

        public void init()
        {
            this._item_name = "UNSET";
            this.setChecked(false);
        }

        @Override
        public String toString()
        {
            return _item_name;
        }
    }

在 Activity 类中(位于 onCreate 方法内):

_selectedItemsListView = (ListView) findViewById(R.id.selected_items_listview);
_selectedItemsListView.setItemsCanFocus(false);
_selectedItemsListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
_selectedItemsListView.setOnItemClickListener(new OnItemClickListener() {
@Override
    public void onItemClick(AdapterView<?> listview, View view, int position, long id) {
        @SuppressWarnings("unchecked")
        ArrayAdapter<SelectedItemData> itemsAdapter = (ArrayAdapter<SelectedItemData>)_selectedItemsListView.getAdapter();
        SelectedItemData selectedItem = itemsAdapter.getItem(position);
        selectedItem.toggle();
        Toast.makeText(view.getContext(), "Item " + selectedItem.getItemName() + " Selected!", Toast.LENGTH_SHORT).show();
        Log.d(TAG, "Is Item Checked? " + selectedItem.isChecked());
        _selectedItemsListView.setAdapter(itemsAdapter);
        }
});

有关如何使 UI 正确显示已选择/检查其中一项的任何指导都很棒。谢谢!

最佳答案

您必须使用新项目更新您的适配器并将其设置为 ListView 。 (项目 Adapter.getItem(项目,位置))

关于android - 复选框未更改 UI 中的选中状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046236/

相关文章:

javascript - 如何在移动应用程序中隐藏 flutter 的 webview

android - 如何使用 Fabric 从 Twitter 获取电子邮件

listview - Flutter:如何根据Expanded和itemCount自动调整ListView中的高度,宽度,字体大小

android - ListView 根本不可见

android - 如何自定义 ListView 行android

android - 当手机处于休眠状态或 Activity (用于启动服务)未运行时,服务不应停止

android - 以编程方式在android中打开.msg文件(Outlook项目文件)

javascript - 在 jasmin 中使用测试 Angular 复选框

javascript - jQuery 表单验证仅适用于一次问题

Javascript 选中/取消选中所有复选框并将值写入文本区域