【发布时间】:2018-09-22 02:53:45
【问题描述】:
我正在使用共享偏好来存储用户详细信息。现在我想从共享首选项中获取价值并将其显示在卡片视图中。我用过
onBindViewHolder(final MyViewHolder holder,final int position)
传递数据的方法。如何在适配器类中添加共享首选项?
【问题讨论】:
我正在使用共享偏好来存储用户详细信息。现在我想从共享首选项中获取价值并将其显示在卡片视图中。我用过
onBindViewHolder(final MyViewHolder holder,final int position)
传递数据的方法。如何在适配器类中添加共享首选项?
【问题讨论】:
您可以通过使用它来获得价值,然后您可以与您的组件绑定
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
【讨论】:
要获取 SharedPreferences 的实例,您需要上下文。将活动/片段的上下文传递给您的适配器。获得上下文后,获取 SharedPreferences 实例,如下所示:
SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE);
然后您可以使用 sharedPref 访问您的用户详细信息。
如果您在应用级别维护一个 SharedPreferences 实例会更好,这样您就不会在任何需要它的地方创建新实例。
【讨论】:
private SharedPreferences preferences;
在构造函数中:
preferences = mActivity.getSharedPreferences("pref_name", Context.MODE_PRIVATE);
现在您可以在 onBindViewHolder 中访问它
【讨论】:
由于共享首选项用于存储键值对,并且我假设您将 cardview 与 recyclerview 一起使用,因此您可能需要值列表。我认为这是不好的做法,如果您需要数据,您可以将 sqlite 用于相同目的从数据库中获取,否则您可以动态获取表单 api(如果您的应用有后端)。
您可以使用以下代码从共享偏好中获取价值
SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String value = (shared.getString(key, ""));
并将此字符串设置为 cardviews 值。
【讨论】: