安卓系统:保存添加到带有SharedPrefs的RecyclerView中的视图



我通过单击按钮将视图添加到RecyclerView中,我希望这些视图能够保存,最好保存在SharedPrefrences中。我们如何做到这一点,是否需要json?

这是适配器:

public class SubjectsAdapter extends RecyclerView.Adapter<SubjectsAdapter.ViewHolder> {
    public List<String> items = new ArrayList<>();
    public Activity mcontext;
    public SubjectsAdapter(Activity context) {
        this.mcontext=context;
    }
    public void addItem(String name) {
        items.add(name);
        notifyItemInserted(items.size() - 1);
    }
    public void removeItem(int position) {
        items.remove(position);
        notifyItemRemoved(position);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.grid_item_button, parent, false);
        view.requestFocus();
        return new ViewHolder(view);
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
    }
    @Override
    public int getItemCount() {
        return items.size();
    }
    static int i = 100;
    static int h = 1000;
    public EditText EditName;
    class ViewHolder extends RecyclerView.ViewHolder{
        public Button GridButton;
        private TextView ClassName;
        public SharedPreferences prefs;
        public ViewHolder(View itemView) {
            super(itemView);
            GridButton = (Button) itemView.findViewById(R.id.grid_button);
            EditName = (EditText) itemView.findViewById(R.id.editName);
            ClassName = (TextView) itemView.findViewById(R.id.ClassName);
            prefs = mcontext.getPreferences(Context.MODE_PRIVATE);
            GridButton.setId(++i);
            GridButton.setText(prefs.getString("key", i + ""));
            EditName.requestFocus();
        }
    }
}

我正在添加活动中的视图,如adapter.addItem("something");

您不能在SharedPreference中存储视图,但可以存储文本视图的值。

pref = getSharedPreferences(prefName, Context.MODE_PRIVATE);
SharedPreferences.Editor ed;
ed = pref.edit();
ed.putString(prefKey2, textView.getText().toString()).commit();

然后您可以将存储的值设置为文本视图

textView.setText(pref.getString(prefKey2, ""));