我使用带有一些静态文本的recyclerview导航抽屉。我希望更新来自SharedPreferences的静态文本末尾的级别值,它包含一个整数值。我正在使用recyclerview为我的导航抽屉。
NavigationAdapter.java
@Override
public void onBindViewHolder(NavDrawerAdapter.ViewHolder viewHolder,
final int i) {
Drawable drawable = null;
if (mData.get(i).getDrawable() != 0) {
drawable = mContext.getResources().getDrawable(
mData.get(i).getDrawable());
}
if (mData.get(i).getType() == NavItem.ITEM) {
setText(viewHolder.textViewItem,viewHolder.textViewlevel, i, drawable);
setBackgroundColor(i, viewHolder);
}
}
private void setText(TextView textView,TextView textViewlevel, final int i, Drawable drawable) {
SharedPreferences sharedPref= getActivity().getSharedPreferences("levels", 0);
String level_time= sharedPref.getString("level_time", "");
textView.setText(mData.get(i).getText());
textViewlevel.setText(level_time);
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null,
null);
}
SharedPreferences不起作用,并在“getActivity()。getSharedPreferences(”levels“,0);” 有没有其他方法可以访问SharedPreferences?
答案 0 :(得分:1)
getActivity()在您的recycler-view适配器中无法识别。您可以将适配器定义为片段的内部类。其他方面,将上下文传递给适配器的构造函数并使用它:
public class Adapter extends .... {
private Context mPassedContext;
public Adapter(Context con, ....) {
mPasssedContext = con;
}
}
使用此上下文:
SharedPreferences sharedPref= mPassedContext.getSharedPreferences("levels", 0);
答案 1 :(得分:0)
使用
SharedPreferences shared = getActivity().getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = shared.getString(keyname, "");
这里使用的是0而不是MODE_PRIVATE