J'ai un RecycleView et je veux enregistrer l'état de celui-ci lorsque l'utilisateur existe l'application via les préférences partagées. Mon problème que je n'ai pas pu résoudre pendant 4 jours est, quand je pousse le bouton Toggle et quitte l'App < lors de la réouverture je trouve tous les Togglebuttons dans le recycleview ont été vérifiés, non seulement celui spécifique que j'ai vérifié et vice versa avec décochanten essayant d'enregistrer l'état du bouton bascule dans recycleview
togglebutton xml
<ToggleButton
android:gravity="start"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/check"
android:textOn=""
android:textOff=""
android:id="@+id/ToggleHeartID"
android:paddingLeft="20dp"
android:onClick="Toggle"
android:layout_margin="20dp"
android:foreground="?android:attr/selectableItemBackground"
/>
c'est ma classe d'adaptateur que je manipule le bouton à bascule en elle:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
ItemClickListener mItemClickListener;
ArrayList<StoryModelM> arrayList = new ArrayList<>();
public Context context;
MyAdapter(ArrayList<StoryModelM> arrayList){
this.arrayList=arrayList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.Listindex.setText(arrayList.get(position).getTitleModel());
holder.ListContent.setText(arrayList.get(position).getContentModel());
Context context =holder.itemView.getContext();
SharedPreferences sharedPreferences = context.getSharedPreferences("tgpref1",Context.MODE_PRIVATE);
boolean tgpref = sharedPreferences.getBoolean("tgpref",true);
if (tgpref){
holder.toggleButton.setChecked(true);
}else {
holder.toggleButton.setChecked(false);
}
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView Listindex;
TextView ListContent;
ToggleButton toggleButton;
public MyViewHolder(final View itemView) {
super(itemView);
final Context context = itemView.getContext();
Listindex =(TextView) itemView.findViewById(R.id.TextViewTitleID);
ListContent = (TextView)itemView.findViewById(R.id.TextViewContentID);
toggleButton =(ToggleButton)itemView.findViewById(R.id.ToggleHeartID);
itemView.setOnClickListener(this);
toggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (toggleButton.isChecked()) {
Animation plus = AnimationUtils.loadAnimation(v.getContext(), R.anim.pulse);
toggleButton.startAnimation(plus);
SharedPreferences sharedPreferences = context.getSharedPreferences("tgpref1", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("tgpref", true);
editor.commit();
}
else {
SharedPreferences sharedPreferences = itemView.getContext().getSharedPreferences("tgpref1", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("tgpref", false);
editor.commit();
}
}
});
}
@Override
public void onClick(View v) {
if (mItemClickListener!=null)
mItemClickListener.onItemClick(itemView, getAdapterPosition(), getItemId());
}
}
public void setFilter(ArrayList<StoryModelM> newList) {
arrayList= new ArrayList<>();
arrayList.addAll(newList);
notifyDataSetChanged();
}
public void setmItemClickListener(ItemClickListener itemClickListener){
this.mItemClickListener= itemClickListener;
}
public interface ItemClickListener {
void onItemClick(View view, int position , long id);
}
public interface ToggleInterface {
void toggleonClick(View view);
}
@Override
public int getItemViewType(int position) {
return position;
}
}