1

まず、これは 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 に設定します。

乾杯

4

1 に答える 1