私は会社のリストを表示する配列リストを持っています。これらの企業のそれぞれは、対応する町名を持っています。さらに、街の名前のいずれかをクリックすると、ArrayListをフィルタリングし、その町の名前を持つ会社だけを表示するように、町の名前ごとにボタンを作成しています。一度クリアされると、arraylistに戻ってアイテムを取り戻す方法:Android
ボタンは、ボタンをクリックすると
stringList.add(tempList.get(n).getTownName());
btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 60));
btnTag.setText(stringList.get(k));
btnTag.setBackgroundResource(R.drawable.alpha_button_selector);
btnTag.setClickable(true);
townLayout.addView(btnTag);
、のようなもの、それは町の名前を表示するように私は、ボタンのテキストを取得していますし、私は、データをフィルタリングするメソッドを呼び出しています、
btnTag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CharSequence name = btnTag.getText();
locationFilter(name);
}
});
データをフィルタリングするために、私は、このような
ArrayList<CompanySearchResult> filtered = new ArrayList<CompanySearchResult>();
for (CompanySearchResult town : tempList) {
if (town.getTownName().equals(name)) {
filtered.add(town);
}
}
tempList.clear();
tempList.addAll(filtered);
listAdapter.notifyDataSetChanged();
、としてフィルタリングされたデータを格納するための新しいのArrayListを作成しています3210
データは適切にフィルタリングされていますが、私の問題は初めてデータをフィルタリングするときです。tempList(データを含むメインArrayList)がフィルタリングされたArrayListの内容によって更新されます。 次に、別の町の名前の2番目のボタンをクリックしてフィルターをかけようとすると、既にフィルタリングされたデータで更新されたtempListをフィルタリングしようとし、表示される結果は空白になります。
したがって、町の名前のボタンがクリックされるたびにtempListに元のデータを再設定し、同様の方法でそれをフィルタリングするにはどうすればよいですか。
私はこれについて調査しましたが、関連するものは見つかりませんでした。
android filter custom array adapter and bring back old items again
How can i take a backup of an ArrayList in Java after i call .clear()?
はしかし、それは助けにはならなかった:私はまた、リンクに記載された解決策を試してみました。どのように私はこれを達成することができますに助けてください誰もできますか?
のように、このメソッドを更新実際にtempListを作成/取得したメソッド? – kulvinder
私はtempListの項目を追加するためにカーソルを使用しています。 – devgeek
また、tempListのような正確なものをもう一つ作成してください。たとえば、mainListとtempListをそのmainList.addAll(tempList)に入れて、それを使ってください。(CompanySearchResult town:mainList) – kulvinder