我在我的recyclerview中的每個視圖中都有togglebuttons,並且在我的Sqlite數據庫中設置了一個數據,當我退出應用程序以在開始時恢復它時,該數據庫會給出ToggleButton的狀態。它工作正常:當我檢查ToggleButton,離開應用程序並重新啓動它,ToggleButton具有與我離開應用程序時相同的狀態。但問題是:當我檢查ToggleButton時,向上滾動視圖,向上滾動後,不再檢查ToggleButton 但是如果我退出應用程序並返回,它會被檢查。如何在我滾動時保存ToggleButton的狀態?如何在recyclerview中滾動時保存togglebutton的狀態?
我在我的onBindViewHolder代碼:
holder.state.setText(item.getState());
holder.toggle.setChecked(false);
if(holder.state.getText().toString().equals("yes")) {
holder.toggle.setChecked(true);
holder.toggle.setBackgroundResource(R.drawable.trianglegreenup);
marks_string = holder.marks.getText().toString();
marksint = Integer.valueOf(marks_string);
marksint--;
marks_string = String.valueOf(marksint);
myDb.updateData(holder.id.getText().toString(), marks_string);
holder.marks.setText(marks_string);
} else {
holder.toggle.setChecked(false);
}
國務正好與默認值SQLite數據庫的字符串:在MyViewHolder 「不」
我的代碼:
toggle =((ToggleButton) itemView.findViewById(R.id.toggleButton));
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
if (isChecked){
if(toggledown.isChecked()) {
toggledown.setChecked(false);
toggle.setChecked(false);
toggledown.setBackgroundResource(R.drawable.triangleblackdown);
myDb.updateData2(id.getText().toString(), "no");
} else {
toggle.setBackgroundResource(R.drawable.trianglegreenup);
marks_string = marks.getText().toString();
marksint = Integer.valueOf(marks_string);
marksint++;
marks_string = String.valueOf(marksint);
myDb.updateData(id.getText().toString(), marks_string);
marks.setText(marks_string);
myDb.updateData2(id.getText().toString(), "yes");
state.setText("yes");
}
} else {
toggle.setBackgroundResource(R.drawable.triangleblackup);
marks_string = marks.getText().toString();
marksint = Integer.valueOf(marks_string);
marksint--;
marks_string = String.valueOf(marksint);
myDb.updateData(id.getText().toString(), marks_string);
marks.setText(marks_string);
myDb.updateData2(id.getText().toString(), "no");
state_.setText("no");
}
}
});
在哪裏「ToggleDown」是Toggle的對面ToggleButton。
謝謝!
你必須調用Adapter.notifyDataSetChanged(); –
@AbdulKawee好的,但在哪裏以及如何?我不明白它是如何工作的 –