【问题标题】:How can I save and restore checked items with simple_list_item_checked?如何使用 simple_list_item_checked 保存和恢复选中的项目?
【发布时间】:2016-03-14 14:47:18
【问题描述】:

我想知道保存和恢复选中项目的最佳方法,在适配器上使用“simple_list_item_checked”,我已经尝试了很长时间使用 SharedPreferences,但没有奏效。你能给我一些例子吗?提前致谢!

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 处理 SparseBooleanArray 有点烦人......只是需要一些帮助

标签: android listview checked


【解决方案1】:

在这里,为您找到了我的旧代码。您可以为此使用SparseBooleanArray

private SparseBooleanArray sbArray;

//set all of the items checked in the start
            if (sbArray == null) {
                for (int i = 0; i < listView.getCount(); i++) {
                    listView.setItemChecked(i, true);
                }
            }
            selectedIdees = new ArrayList<>();

    //if we already did some checking in filters, we get our previous selections.
            if (sbArray != null) {
                Log.i(LOG_TAG, "sbArray size " + sbArray.size());

                for (int i = 0; i < sbArray.size(); i++) {
                    int key = sbArray.keyAt(i);
                    if (sbArray.get(key)) {
                        listView.setItemChecked(key, true);
                    }

然后我在某个地方放置了 okButton 并将 onClickListener 设置为它。

okBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                sbArray = listView.getCheckedItemPositions();

                Log.i(LOG_TAG, "sbArray created. size= " + sbArray.size());
                for (int i = 0; i < sbArray.size(); i++) {
                    int key = sbArray.keyAt(i);

                    if (sbArray.get(key)) {
                        selectedIdees.add(key + 1);
                        Log.i(LOG_TAG, "added + " + (key + 1));
                    }

然后我建议将其保存在共享首选项中,创建parcelable wrapper around it

【讨论】:

  • 终于,很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
相关资源
最近更新 更多