私はリサイクラビュー内のトグルボタンを持っています。アプリケーションの再起動のたびにトグルボタンが押されたかどうかを知るために、sharedpreferenceのブール値を保存しています。問題は です。トグルボタンと、ここでトグルボタンとリサイクルビューの間に位置する接続がないすべてのトグルボタンがオフのボタンに対して同じものに乗るのアプリケーションを閉じて私のコードは、あなたの実装が間違っているRecyclerViewのトグルボタンの位置
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.model,null);
MyHolder holder=new MyHolder(v);
SharedPreferences sharedPrefs = c.getSharedPreferences("lol", MODE_PRIVATE);
Boolean a = sharedPrefs.getBoolean("abc" , false);
if(a) {
holder.fav.setBackgroundDrawable(ContextCompat.getDrawable(c, R.drawable.star_light));
holder.fav.setChecked(true);
} else {
holder.fav.setBackgroundDrawable(ContextCompat.getDrawable(c, R.drawable.star_off));
holder.fav.setChecked(false);
}
return holder;
}
@Override
public void onBindViewHolder(final MyHolder holder, final int position) {
holder.nameTxt.setText(players[position]);
holder.posTxt.setText(positions[position]);
holder.img.setImageResource(images[position]);
holder.fav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
holder.fav.setBackgroundDrawable(ContextCompat.getDrawable(c,R.drawable.star_light));
SharedPreferences.Editor editor = c.getSharedPreferences("lol", MODE_PRIVATE).edit();
editor.putBoolean("abc", true);
editor.commit();
} else {
holder.fav.setBackgroundDrawable(ContextCompat.getDrawable(c, R.drawable.star_off));
SharedPreferences.Editor editor = c.getSharedPreferences("lol", MODE_PRIVATE).edit();
editor.putBoolean("abc", false);
editor.commit();
}
}
});
[OK]を、あなたが正しいですありがとうございました。しかし、あなたの質問は何ですか? –
あなたが使ったロジックが間違っています。すべてのトグルボタンにSharedPreferencesの 'abc'値を1つだけ使用しています。それが有効になったら、すべてに反映されます。 –
@ josef.adamcikボタンを1つクリックしてアプリケーションを再起動すると、すべてのボタンが1つのようにトグルします – Eazyz