ListView 中每个项目的单独首选项?
我正在创建我的第一个 Android 应用程序(或者无论如何都在尝试),但我有一个问题,我似乎找不到答案。
我想允许用户为列表视图中的每个项目输入一组单独的首选项。我的 PreferenceScreen 正在工作,但它为每个项目维护相同的首选项(即更改 1 个项目也会导致所有其他项目发生更改)。
举一个更详细的例子: 假设我有一个汽车列表: * 车 1 * 车 2 * 等等...
我希望能够单击“Car 1”并获得一个 PreferencesScreen 来指定该车的“品牌”、“型号”、“颜色”,而不是为整个汽车全局存储这些条目应用程序。
这可能吗?
感谢您的帮助!
//N
I'm creating my first android app (or attempting to anyway) and i have a question i can't seem to find the answer to.
I would like to allow users to enter a separate set of preferences for each item in a list view. I have the PreferenceScreen working, but it maintains the same preferences for every item (i.e. changing 1 item results in changes to all others as well).
To give a more detailed example:
Say i have a list of cars:
* Car 1
* Car 2
* Etc...
I would like to be able to click on "Car 1" and get a PreferencesScreen to specify "Make", "Model", "Color" for just that car, instead of having those entries stored globally for the whole app.
Is this possible?
Thanks for your help!
//N
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解决了!!
对于任何疑问,解决方案是您必须使用您
想要修改首选项的项目的唯一值调用
getPreferenceManager().setSharedPreferenceName(value)
(在我的例子中,我使用了ListView
位置)在调用addPreferencesFromResource
之前。Solved it!!
For any wondering, the solution is that you must call
getPreferenceManager().setSharedPreferenceName(value)
with a value unique to the item you'd like to modify the preferences for (in my case, i used theListView
position) prior to callingaddPreferencesFromResource
.API 11 上已弃用
getPreferenceManager()
现在,在 honeycom 和 ICS 中,
getPreferenceManager()
方法已弃用。您知道如何使用新的(PreferenceFragment + Headers)来做到这一点吗?谢谢各位!它在早期版本中运行完美!
更新:直到 api 级别 11 都是相同的方法,但您必须在 Fragment 上调用它,而不是在 Activity 上调用它。
getPreferenceManager()
deprecated on api 11Now with honeycom and ICS the method
getPreferenceManager()
is deprecated. Do you know how to do that with the new (PreferenceFragment + Headers)?Thanks men! It works perfect in earlier versions!
UPDATE: Up to api level 11 is the same method but you have to call it on a Fragment, not on activity.