Я пытаюсь сохранить состояние моей кнопки с помощью SharedPreferences, но это просто не сработает. Мое приложение не обнаруживает sh ничего, оно просто не сохраняет данные (состояние mButton
), оно просто перезагружается после перезапуска приложения. Я пытаюсь сделать это в RecyclerVier.Adapter
.
Вот мой код
package com.example.myApp;
public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
private ArrayList<MyItem> mExampleList;
public static class ExampleViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
private EditText topicName;
private Button mButton;
private int clicks = 1;
private Context mContext;
public ExampleViewHolder(View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.tv_country);
mContext = itemView.getContext();
mTextView = itemView.findViewById(R.id.tv_country);
mButton = itemView.findViewById(R.id.button3);
SharedPreferences pref = mContext.getSharedPreferences("button", MODE_PRIVATE);
String color = pref.getString("color", "default");
if(color.equals("green")){
//color was green
mButton.setBackgroundResource(R.drawable.button_green);
}else{
//color was red
mButton.setBackgroundResource(R.drawable.button_red);
}
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clicks++;
if (clicks % 2 == 0) {
mButton.setBackgroundResource(R.drawable.button_green);
//save as green
SharedPreferences.Editor editor = mContext.getSharedPreferences("button",
MODE_PRIVATE).edit();
editor.putString("color", "green");
editor.apply();
} else
mButton.setBackgroundResource(R.drawable.button_red);
//save as red
SharedPreferences.Editor editor = mContext.getSharedPreferences("button",
MODE_PRIVATE).edit();
editor.putString("color", "red");
editor.apply();
}
});
}
}
public ExampleAdapter(ArrayList<MyItem> exampleList) {
mExampleList = exampleList;
}
@Override
public ExampleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, parent, false);
ExampleViewHolder evh = new ExampleViewHolder(v);
return evh;
}
@Override
public void onBindViewHolder(ExampleViewHolder holder, int position) {
MyItem currentItem = mExampleList.get(position);
holder.mTextView.setText(currentItem.getTaskText());
}
@Override
public int getItemCount() {
return mExampleList.size();
}
}