【问题标题】:Checkboxes not changing checked status in UI?复选框不会更改 UI 中的选中状态?
【发布时间】:2011-12-24 04:16:51
【问题描述】:

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

换一种说法——我如何以编程方式告诉 UI 复选框应该显示为“已选中”?看起来这应该是一个非常简单的过程,但我在查找这些信息时遇到了很多麻烦。

代码如下:

对于ArrayAdaptor中的item数据类:

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 正确显示已选择/选中的项目之一的指导都会很棒。谢谢!

【问题讨论】:

  • 注意:我 am 将适配器设置在别处,我认为该代码不相关?所有项目都正确填充到列表中——我的问题是如何让复选框显示它已被选中。

标签: android listview checkbox android-arrayadapter


【解决方案1】:

您必须使用新项目更新您的适配器并将其设置为列表视图。 (itemsAdapter.setItem(item,position))

【讨论】:

  • 我正在其他地方设置适配器——我的问题是关于如何检查已放入适配器的项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 2020-10-27
  • 2013-08-30
  • 2012-01-15
  • 2014-03-31
  • 1970-01-01
相关资源
最近更新 更多