更新导航抽屉内容无法识别值获取活动

时间:2015-03-01 07:33:14

标签: android android-fragments sharedpreferences navigation-drawer android-recyclerview

我使用带有一些静态文本的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?

2 个答案:

答案 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