0

I utilisé checkBox dans recycleur View, Alors que checkBox est sélectionné favori ArrayList est rempli avec le nouveau point de ArrayList list_items selon la position, quand cliquez sur le bouton favori recycleur View est rempli de favori ArrayList mais la sélection de cases à cocher a disparu, et quand onBackPressed est sélectionné recycleur Voir rempli apparaît list_items ArrayList sans cases à cocher sélectionnées, j'ai essayé préférences partageais pour résoudre cela et garder aussi la sélection des cases à cocher si je ferme l'application, mais n'a pas réussiComment utiliser les préférences partagées pour enregistrer la sélection de checkBox dans Recycler View?

class RecyclerView_dAdapter extends RecyclerView.Adapter { 

private List<List_Item> list_items; 
private ArrayList favorite = new ArrayList(); 
private List<List_Item> favorite_itemes = new ArrayList<>(); 
private Context context; 

RecyclerView_dAdapter(List<List_Item> list_Item, Context context) { 
list_items = list_Item; 
this.context = context; 
} 

@Override 
public RecyclerView_dAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item, parent, false); 
return new ViewHolder(v); 
} 

@Override 
public void onBindViewHolder(final RecyclerView_dAdapter.ViewHolder holder, final int position) { 
final List_Item current = list_items.get(position); 
final String name = current.getName(); 
holder.TextName.setText(name); 

holder.TextName.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(context, Show_Team_Activity.class); 
     intent.putExtra("Team_num", name); 
     context.startActivity(intent); 
    } 
}); 
holder.favorite_checkBox.setChecked(favorite_itemes.contains(current)); 
holder.setItemClickListener(new ItemClickListener() { 
    @Override 
    public void onItemClick(View v, int pos) { 
     CheckBox chk = (CheckBox) v; 
     if (chk.isChecked()) { 
      favorite_itemes.add(list_items.get(pos)); 
      chk.setChecked(true); 
     } else if (!chk.isChecked()) {    
      favorite_itemes.remove(list_items.get(pos)); 
      chk.setChecked(false); 
     } 
    } 
}); 

} 
ArrayList favorite_array(){ 
for (int i = 0; i < favorite_itemes.size(); i++){ 
    favorite.add(favorite_itemes.get(i)); 
}return favorite; 
} 

@Override 
public int getItemCount() { 
return list_items.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {  
private TextView TextName; 
private CheckBox favorite_checkBox; 
ItemClickListener itemClickListener; 
ViewHolder(View view) { 
    super(view); 
    TextName = (TextView) view.findViewById(R.id.textView_rowitem); 
    favorite_checkBox = (CheckBox) view.findViewById(R.id.favorite_checkBox); 
    favorite_checkBox.setOnClickListener(this); 
} 
public void setItemClickListener(ItemClickListener ic) { 
    this.itemClickListener = ic; 
} 

@Override 
public void onClick(View v) { 
    this.itemClickListener.onItemClick(v, getLayoutPosition()); 
} 
} 
} 
+0

Où est le problème, vous n'avez pas affiché votre code de préférences partagées –

+0

parce que je did't savoir comment le droit dans ce cas –

+0

S'il vous plaît regarder ma réponse, Acceptez-le si vous comprenez. –

Répondre

0

Utilisez ces étapes: 1. Convertissez vos favourite_items comme JSONArray et le convertir en une chaîne

  1. stocker la chaîne dans SharedPreferences

  2. Dans le sur Créer récupérer les préférences partagées, reconvertir en JSON tableau, puis à la ArrayList

  3. Traverse si le ArrayList contient la case à cocher actuelle, marquez-le comme sélectionné.

Have Alook à ce https://stackoverflow.com/a/10238647/2555419

+0

Je suis encore un débutant, pouvez-vous s'il vous plaît m'aider à écrire ce code? –

+0

Voir ma modification pour le lien. Veuillez accepter ma réponse et commenter ici si vous avez besoin de plus d'aide. –

+0

J'ai essayé d'implémenter le code dans votre édition mais j'ai échoué, pourriez-vous me corriger le code pour mon affaire? –