2012-02-18 16 views
0

私はチェックボックス付きのカスタムリストビューを持っています。私はチェックボックスの状態をアプリの生涯にわたって保存したい。どうすればこれを達成できますか?ありがとうリストビューに存在するチェックボックスの状態を永遠に保存するには?

+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

私は、各チェックボックスの状態を格納するboolean配列を持っています。問題は、この配列が永続的ではないということです。しかし、sharedprefrencesは配列をサポートしていません。 – Dinesh

0

あなたはリストビューでチェックボックスを使用しないでください、私は彼らのためにTableLayoutを使用することを好みます。リストビューを使用したい場合は ただし、以下の以前の質問を考慮してください - 同じトピックに関する他の質問の

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

ている多くを、彼らのために検索を検討しますあまりにも。

EDIT:ListViewの

XML交換するダイナミックTableLayoutため例: - Javaで

<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またはLinear Layoutを使用するのが最も簡単なオプションです。 ListViewを使いたい場合は、チェックボックスからデータを取得したら、onFlingまたはonScroll Listenerのチェックボックスを更新するメソッドを配置する必要があります。しかし、努力する価値がないと教えてください。 – noob

+0

私は正常にチェックボックスで動作するlistviewを持っていますが、チェックボックスの状態をアプリケーションの永続化で、アクティビティの永続化ではないようにしたいという問題があります。 – Dinesh

関連する問題