RecyclerView内部的SharedPreferences

问题描述 投票:0回答:1

我创建了一个活动,在其中实施了回收站视图适配器。我还创建了第二个活动,该活动应在SharedPreferences中添加一个值。之后,我想基于该SharedPreferences的值更改textView的文本。但是,当我尝试设置它的文本无效时,它甚至都没有添加默认值SharedPreferences

活动内保存点击数据的代码:

public void Done(View view){

        SharedPreferences mPreferences = 
        mContext.getSharedPreferences("Checker",MODE_PRIVATE);
        SharedPreferences.Editor mEditor = mPreferences.edit();

        mEditor.putString("Day1", "complete");
        mEditor.apply();

        //mRecyclerView.setAdapter(fitnessAdapter);

        fitnessAdapter.notifyDataSetChanged();

回收者视图适配器内部的代码:(仅是我使用代码的ViewHolder)

public class MainViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        TextView segment;
        OnNoteListener mOnNoteListener;

        private MainViewHolder( View itemView, OnNoteListener onNoteListener, Context context) {
            super(itemView);
            segment = itemView.findViewById(R.id.segment_shredmas);

            SharedPreferences mPreferences = context.getSharedPreferences("Checker",MODE_PRIVATE);
            String daySelector = mPreferences.getString("ShredmasD1","Nothing");

            segment.setText("Day "+ daySelector);

            this.mOnNoteListener = onNoteListener;
            itemView.setOnClickListener(this);
        }
        @Override
        public void onClick(View v) {
            mOnNoteListener.onNoteClick(getAdapterPosition());
        }
    }

PS:我尝试了SharedPreferences的两种方式。但是由于旧的是最后一个,所以我留下了这样的代码

android android-studio android-recyclerview sharedpreferences recycler-adapter
1个回答
0
投票

您使用获取和设置sharef首选项值的键是不同的,因此您在Done方法中更改了错误的文本。

mEditor.putString("Day1", "complete"); String daySelector = mPreferences.getString("ShredmasD1","Nothing");


0
投票

使用mEditor.commit()代替mEditor.apply()保存您的SharedPreferences。

© www.soinside.com 2019 - 2024. All rights reserved.