如何使用 simple_list_item_checked 保存和恢复选中的项目?
How can I save and restore checked items with simple_list_item_checked?
我想知道保存和恢复选中项目的最佳方法,在适配器上使用 "simple_list_item_checked",我已经尝试使用 SharedPreferences 很长时间了,但没有成功。你能给我一些例子吗?提前致谢!
在这里,为您找到了我的旧代码。您可以为此使用 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。
我想知道保存和恢复选中项目的最佳方法,在适配器上使用 "simple_list_item_checked",我已经尝试使用 SharedPreferences 很长时间了,但没有成功。你能给我一些例子吗?提前致谢!
在这里,为您找到了我的旧代码。您可以为此使用 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。