2012-02-18 2 views
0

체크리스트가있는 사용자 정의 목록보기가 있습니다. 확인란의 상태를 앱의 전체 수명 동안 저장하려고합니다. 이것을 어떻게 할 수 있습니까? 감사합니다listview에있는 checkbox의 상태를 영원히 저장하는 방법은 무엇입니까?

+0

이 질문에 대한 답변이 제공되지 않습니다. 더 많은 정보를 입력하십시오. 당신이 보여주는 데이터는 어디서 왔는지와 같습니다. 그 sqlite 데이터베이스가 데이터베이스에 상태를 저장하는 경우. 데이터가 서버에서 구문 분석되는 경우 ... – KarlKarlsom

+0

확인란은 사용자가 선택했으나 다른 서비스의 영향을받지 않습니다. – Dinesh

답변

2

SharedPreferences 클래스는 원시 데이터 형식의 영구 키 - 값 쌍을 저장하고 검색 할 수있는 일반 프레임 워크를 제공합니다.

완전성을 위해 여기에 샘플 코드를 포함합니다.

public class Xxx extends Activity { 
public static final String PREFS_NAME = "MyPrefsFile"; 

@Override 
protected void onCreate(Bundle state){ 
    super.onCreate(state); 
    . . . 

    // Restore preferences 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    boolean silent = settings.getBoolean("silentMode", false); 
    setSilent(silent); 
} 

@Override 
protected void onStop(){ 
    super.onStop(); 

    // We need an Editor object to make preference changes. 
    // All objects are from android.context.Context 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("silentMode", mSilentMode); 

    // Commit the edits! 
    editor.commit(); 
} 

}

+0

나는 그것을 알고 있지만 목록보기에는 약 16 개의 확인란이 있습니다. 모든 확인란의 상태를 저장하고 싶습니다. – Dinesh

+0

나는 [Preference Activity] (http://developer.android.com/reference/android/preference/Preference.html)가 당신이 찾고있는 것이라고 생각한다. 이 [튜토리얼] (http://www.javacodegeeks.com/2011/01/android-quick-preferences-tutorial.html)을 통해 속도가 향상 될 것입니다! –

+0

각 확인란의 상태를 저장하는 부울 배열이 있습니다. 문제는이 배열이 지속되지 않는다는 것입니다. 그러나 sharedprefrences는 배열을 지원하지 않습니다. – Dinesh

0

당신의 ListView에서 체크 박스를 사용하지 않아야합니다, 나는 그들을 위해 TableLayout을를 사용하는 것을 선호합니다. 당신의 ListView를 사용하려면 그러나, 다음과 같은 이전의 질문을 고려하십시오 - 동일한 주제에 대한 다른 질문의

Android save Checkbox State in ListView with Cursor Adapter

Finding the Checked state of checkbox in a custom listview

Code does not extend ListViewActivity, but does have a listview

있는 거 많이, 그들을 위해 검색 고려 너무.

편집 : 동적 TableLayout을위한 예리스트 뷰를

XML 대체 : - 자바

<ScrollView 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TableLayout 
android:id="@+id/table" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
</TableLayout> 
</ScrollView> 

코드 발췌 : -

TableLayout table=(TableLayout)findViewByid(R.id.table); 
ArrayList<CheckBox> cbData=new ArrayList<CheckBox>(); 
for(int i=0;i<rowCount;i++){ 
    TextView t1=new TextView(this); 
    t1.setText("Text1"); 
    TextView t2=new TextView(this); 
    t2.setText("Text2"); 
    CheckBox cb=new CheckBox(this); 
    TableRow row=new TableRow(this); 
    row.addView(t1); 
    row.addView(t2); 
    row.addView(cb); 
    cbData.add(cb); 
    table.addView(row); 
} 

을 위의 코드를 사용하여 추가 할 수 TableLayout에서 원하는만큼의 행을 가져오고, TableLayout은 뷰를 재활용하지 않기 때문에 체크 박스 데이터를 캐시 할 필요가 없습니다. 상태. CheckBox에 액세스하려면 cbData.get (index) 메서드를 사용할 수 있습니다. 확인란 상태를 캐싱하기위한 코딩보다 훨씬 쉽습니다.

+0

내 문제는 다르다. 체크 박스의 상태를 유지하고 싶다. – Dinesh

+0

그런 다음 ScrollView에서 TableLayout 또는 선형 레이아웃을 사용하는 것이 가장 쉬운 옵션입니다. ListView에 계속 가고 싶다면 체크 박스에서 데이터를 가져 와서 onFling 또는 onScroll Listener의 체크 박스를 업데이트하는 메서드를 넣어야합니다. 그러나 노력할만한 가치가 없다고 말씀 드리겠습니다. – noob

+0

나는 listview가 성공적으로 checkboxes와 함께 작동하지만 체크 박스의 상태를 응용 프로그램의 지속성이 아닌 활동의 지속성으로하고 싶습니다. – Dinesh

관련 문제