【发布时间】:2014-06-27 16:22:09
【问题描述】:
我创建了一个将共享首选项显示为字符串的列表。我是这样创建的...
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItems);
setListAdapter(adapter);
if (sharedpreferences.contains(Name0)) {
String prefs = sharedpreferences.getString(Name0, "");
listItems.add(prefs);
}
等等其他偏好。我正在尝试弄清楚如何删除列表项,以及共享首选项以及它。我不知道是否应该使用 onClick 侦听器,或者列表中的删除按钮,或者我可能还没有读过的其他方法。我想让它对用户来说非常简单和直观。
所以我的问题是,如何编辑现有代码以删除列表项及其显示的首选项。感谢您的帮助。
【问题讨论】:
-
如何决定删除列表视图项取决于您:) 但是要删除相应的共享首选项,您可以调用 sharedpreferences.edit().remove(Name0).commit();跨度>
-
一个建议是使用 setTag()。例如,将 name0 放在用于删除列表项的按钮的标签上。然后在 onClickListener() { onClick(View v) { ... } } 中,您可以使用 v.getTag() 来“识别”该按钮并删除共享首选项。如果您在列表视图适配器中附加 onClickListener,请不要在初始化 convertView (convertView == null) 的位置设置标签,因为这样会附加错误的名称。
-
好的,所以为了使用您描述的这种方法,我必须为每个列表项使用一个单独的按钮,这样我可以使用 setTag() 将参数发送到我的 onClickListener? @Losin'Me
-
您有多种选择如何删除列表项。如您所述,您可以添加
Button。另一种常见的方法是使用一个项目长时钟来调出一个菜单,您可以从中删除它。为此使用onCreateContextMenu()。如果您想要真正复杂,您可以让用户向左滑动该项目以将其删除。不过,你必须用谷歌搜索这个。 -
顺便说一句:不要将
commit()用于 UI 线程中的共享首选项,因为它是阻塞的。请改用apply(),即异步。
标签: android listview android-listview sharedpreferences android-adapter