まず、これは StackOverflow に関する私の最初の質問です。フォーマットの問題などはご容赦ください。
私は、ユーザーが Web サービスから取得したコンテンツを ListView に入力できるようにする Android タブレット アプリケーションを作成しています。現時点では、異なるページに 6 つのフラグメントを含む ViewPager を含むアクティビティが 1 つあります。
問題は、ダウンロードされて ListView に追加されたデータが、ユーザーが別のタブに移動したり、再び戻ると、フラグメントの OnCreateView メソッドが呼び出されると消えてしまうことです (これにより、ListView が初期化されて空に戻ります)。
データベース/共有設定に保存する以外に、リストビューのコンテンツを保持する最良の方法は何ですか? ユーザーがアプリケーションをログアウト/再起動すると、リストビューのデータを破棄する必要があるため、決して永続化しないことを望んでいます。
ListView コンテナー フラグメントの OnCreateView:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_certificate_list, container, false);
return rootView;
}
ユーザーがダウンロード ボタンを押したときに ListView を設定するコードは次のとおりです。
ListView lv = (ListView) callerActivity.findViewById(R.id.listView1);
lv.setAdapter(new CertListAdapter(callerActivity.getBaseContext(), activeCerts));
if (activeCerts.size() > 0) {
((TextView) callerActivity.findViewById(R.id.certStatusLabel)).setVisibility(View.GONE);
} else {
((TextView) callerActivity.findViewById(R.id.certStatusLabel)).setText(callerActivity.getString(R.string.certsDontExist));
}
activeCerts 変数は、Web サービスから取得される証明書オブジェクトの配列リストです。
編集
onCreateView メソッドで "activeCerts" 変数が null かどうかを確認し、null でない場合は ListView に再度入力するという解決策を見つけました。ユーザーがログアウトしたら、activeCerts を null に設定します。
乾杯