2012-01-09 12 views
2

SQLiteデータベースのエントリをExpandable ListViewに表示していますが、すべて正常に動作していますが、すべての子の隣にチェックボックスを追加します。チェックボックスをチェックした後、スクロールダウンまたはチェックボックスをチェックするたびに、チェックボックスの状態は保存されません。グループをスクロールダウンして展開するときは、リストがリサイクルされていることはわかっています。すべてのチェックボックスの状態を保存するにはどうすればいいですか? CursorTreeAdapterを継承するクラスがあり、メソッドには「childPosition」はありません。州を救うためには何をする必要がありますか?拡張リストビューのチェックボックスの状態を保存するには -

答えて

1

リスト要素の合計と同じサイズのブール値フラグの配列を設定し、この配列からチェックされた値を任意のコンポーネントに対して取得できます。

+0

返信いただきありがとうございます。どのメソッドでは、私はバックアップをスクロールした場合にチェックするチェックボックスを設定するためにこの配列を呼び出すでしょうか?また、いくつかのサンプルコードを提供できますか? – user990230

+0

この配列をgetChildViewメソッドで使用する必要があります。アダプタをスクロールバックしたり設定したりするときはいつでも呼び出されますが、今はサンプルがありませんが、リンクを検索してフォローして展開可能なリストビューをカスタマイズできます。あなたは十分な助けを得るでしょう。 – jeet

0

もう1つの解決策は、リストビューで各要素のカウンタを保持できることです。たとえば、Personリストがある場合、Personクラスにカウンタ変数を1つ追加できます。

getChildViewメソッドでは、以下のようにすべてのコードをifブロックに入れます。

public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) { 

    //FOR SAVE THE STATES!! 
    if(parents.get(groupPosition).getCounter()==0) { 
     DatePicker datePicker = null; 
     Button ok = null; 
     Spinner installment = null; 
     CheckBox creditCard; 
     ......//BLA BLA BLA 


     //After finish your codes, increment the counter 
     parents.get(groupPosition).setCounter((parents.get(groupPosition).getCounter()+1)); 
    } 

    return convertView; 
} 

呼び出される各expandGroupメソッドに対して、すべての初期化(今の場合はブロック内のもの)が繰り返されるためです。そのため、オブジェクトの状態が緩やかになります。

このヘルプが必要です。

関連する問題