내 recyclerview에서 각보기에 togglebuttons가 있고 시작시 복원 할 때 응용 프로그램을 종료 할 때 ToggleButton의 상태를 알려주는 Sqlite 데이터베이스에 Data를 설정합니다. 잘 작동합니다 : ToggleButton을 체크하고 앱을 종료하고 다시 시작하면 ToggleButton은 앱을 떠날 때와 동일한 상태가됩니다. 하지만 문제는 : ToggleButton을 체크하고 스크롤 아웃 한 후 ToggleButton은 더 이상 을 체크하지 않고을 체크하고 돌아와서 체크하면 체크됩니다. 스크롤 할 때 ToggleButton의 상태를 저장하려면 어떻게해야합니까?recyclerview에서 스크롤 할 때 토글 버튼의 상태를 저장하는 방법은 무엇입니까?
내 onBindViewHolder에 내 코드 :
국가는 기본 값으로 SQLite는 데이터베이스 단지 문자열입니다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);
}
: MyViewHolder에 "NO"
내 코드 :
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 좋아,하지만 어디서 어떻게? 내가 어떻게 작동하는지 이해하지 못한다. –