google/stack でいくつかのサンプルを調べましたが、私の問題に対する適切な解決策が見つかりませんでした。
リストビューが表示されるアクティビティで、フィルターが作成されました(winesCopyはワインリストのコピーです):
public static List<Wine> filterWinesString(List<Wine> wines, Object filterItem)
{
for(Wine o : wines)
{
if(o.getColor().equals((String)filterItem)||o.getCountry().equals((String)filterItem)||o.getDescription().equals((String)filterItem)||o.getTaste().equals((String)filterItem)||
o.getBiologic().equals(filterItem)||o.getSparkling().equals(filterItem)||filterItem.equals(o.getYear()))
{
filteredList.add((Wine) o);
}
}
if(!filteredList.equals(null))
{
wines= filteredList;
return wines;
}
else{
return wines;
}
}
public static void clearFilter()
{
filteredList.clear();
wines=winesCopy;
}
そして、「ダイアログ」として使用するアクティビティで:
Button btnSubmit = (Button) findViewById(R.id.activity_btn_add_filter);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(!etLand.equals(null))
{
ListWineView.filterWinesString(ListWineView.winesCopy,etLand.getText().toString());
}
if(!etTaste.equals(null)){
ListWineView.filterWinesString(ListWineView.winesCopy,etTaste.getText().toString());
}
if(!etYear.equals(null)){
ListWineView.filterWinesString(ListWineView.winesCopy,etYear.getText().toString());
}
if(cbBiologic.isChecked()){
ListWineView.filterWinesString(ListWineView.winesCopy, "true");
}else{
ListWineView.filterWinesString(ListWineView.winesCopy, "false");
}
if(cbMouserend.isChecked()){
ListWineView.filterWinesString(ListWineView.winesCopy, "true");
}else{
ListWineView.filterWinesString(ListWineView.winesCopy, "false");
}
if(spinner1.getSelectedItemId()!=0){
ListWineView.filterWinesString(ListWineView.winesCopy,spinner1.getSelectedItem().toString());
}
ListWinesViewFilterActivity.this.finish();
}
});
}
ここで notifyDatasetChange() を使用する必要があると思いました:
btnFilter.setText("Filter");
btnFilter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ListWineView.this, ListWinesViewFilterActivity.class);
startActivity(i);
adapter.notifyDataSetChanged();
}
});
しかし、リストビューは更新されていません。
編集私は今、コードを少し変更し、それを機能させました。
回答として投稿されたソリューション。