私はアイスクリームサンドイッチAPIをサポートするAndroidアプリに取り組んでいますが、Android2.1の実行などの古いデバイスで動作します。
これを行うには、現在のAPIバージョンを確認し、アイスクリームサンドイッチが1つのアクティビティを呼び出し、それ以下の場合は別のアクティビティを呼び出します。
ユーザーが検索を実行できるようにしています。結果が得られたら、ArrayListをクリアしてから、検索からアイテムを追加し直して、arrayadapter.notifydatasetchangedを呼び出します。ICSバージョンからプレICSバージョンにコピーして貼り付けたこのコード。ICSは正常に動作しますが、プレICSバージョンではリストビューが更新されません。以下は私が持っているコードです。
public void performSearch(ArrayList<Spanned> searchPasswords)
{
if (searchPasswords.size() > 0)
{
btnClearSearch.setVisibility(View.VISIBLE);
passwords.clear();
for (int i = 0; i < searchPasswords.size(); i++)
{
passwords.add(searchPasswords.get(i));
}
passwordArrayAdapter.notifyDataSetChanged();
btnClearSearch.setOnClickListener(mBtnClearSearch);
common.showToastMessage(searchPasswords.size() + " result(s) found", Toast.LENGTH_LONG);
}
else
{
common.showToastMessage("No search results found", Toast.LENGTH_LONG);
}
}
この関数をデバッグしたので、明確に呼び出して、結果がいくつ見つかったかを示すトーストメッセージを表示しますが、リストビューは変更されません。
アップデート
少し紛らわしい発見をしました。リストビューの初期読み込みを行う関数のテストとして、手動で新しい検索を作成し、ArrayList<Spanned>
これを問題のあるものに渡しPerformSearch(ArrayList<Spanned>
ます。これは問題なく機能します。
PerformSearchがListViewを更新しないという問題は、onActivityResultから呼び出されている場合にのみ発生するようです。onActivityResultは正常に機能していることを知っています。これは、performSearch関数が呼び出されたときに、1つの結果が見つかったために出力されるため、performSearch関数を呼び出したonActivityResultからリストビューだけが更新されないため、確実に取得されたデータです。