ListView 내에서 실제로 확인란의 결과를 유지하는 방법을 설명하는 곳에서는 기사 하나를 찾을 수 없습니다. 많음은 표시하는 방법을 보여 주지만 모두 저장하는 방법을 생략합니다.목록보기에서 파일에 체크 된 항목 저장
메뉴 항목에서 '즐겨 찾기 설정'을 클릭하면 이름 목록을로드하고 각각에 체크 박스를 표시하고 싶습니다. 나는 여러 개의 '점검'을 할 수 있기를 원합니다. 그런 다음 확인 된 설정으로 목록을 SD 카드의 영구 저장 장치에 저장할 수 있기를 원합니다. 목록에는 "name"값과 "isChecked"값이 포함되어 있어야합니다.
내 문제는 구조와 범위 중 하나라고 생각하므로 모든 코드가 아닌 아래 구조 만 보여줍니다. 오히려 메인 메뉴 활성 구문
보다는 I 커스텀 어댑터에리스트 (checkedlist)를 통과
public class SetFavourites extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.
.
FavouritesAdapter adapter = new FavouritesAdapter(this, checkedList);
setListAdapter(adapter);
}
어댑터 체크 박스 내가이 시점에서 변경되어,마다 onCheckedChangeListener을 갖는다 // 여기에 내가 붙어있는 곳이 있는데, 그 행의 이름과 값을 확인할 것입니다.
public class FavouritesAdapter extends ArrayAdapter<JSONObject> implements OnCheckedChangeListener {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
}
@Override
public void onCheckedChanged(CompoundButton cb, boolean isChecked) {
JSONObject checked = getItem(posSelected);
// Here's where I'm stuck
}
}
내 질문에 어떻게 여러 체크 이벤트가있는 경우 데이터를 유지할 수 있습니까?
행 이름과 체크 된 상태를 보유 할 모델을 작성한 경우, 활동에서 또는 어댑터에서 모델을 어디에서 인스턴스화합니까?
어댑터 내에서 '확인'이 완료되면 알려주는 이벤트가 없으므로 모델에 추가 할 수는 있지만 저장할 수는 없습니다.
어댑터가 모델을 인스턴스화하는 경우 주 활동에서 어떻게 저장합니까? 데이터 저장을 완료하는 데 사용할 수있는 이벤트는 무엇입니까? 뒤로 버튼 메소드 (기본 액티비티 내에서 정의되므로 어댑터 내에서 작동 할 수 없음) 또는 액티비티 onStop() 메소드와 비슷합니다.
액티비티에서 데이터 모델을 인스턴스화하고 전달하면 다시 전달되어 저장됩니다.
자세히 알 수 있듯이, 나는이 문제에 어떻게 접근해야하는지 완전히 혼동합니다.
감사
SharedPreferences를 저장하려는 경우이를 유지하는 것이 더 좋은 옵션 인 것 같습니다. 또한 구현하기가 더 쉬울 것입니다. http://developer.android.com/reference/android/content/SharedPreferences.html – FoamyGuy
어떤 데이터 유형의 배열 목록에 상태를 저장 한 다음 json 배열로 변환하고 json 문자열을 환경 설정에 serialize합니다. 거대한 목록이 아니라고 가정하면 GSON을 사용하여 훨씬 쉽게 만들 수 있습니다. 이 작업을 수행하기 위해 어댑터에 메서드를 추가하기 만하면됩니다. 일반적으로 데이터를 유지할 위치는 활동의 onPause입니다. 그래서 adapter.saveState() 또는 그런 것. – Idistic