タイトルが示すように、7 つのオプションでフィルターを使用したいもののリストを取得しました。
これらすべてのオプションをケースに入れたい場合は、5040 の可能性を意味する 7*6*5*4*3*2*1 を見てみましょう。右?
では、これほど大きな switch ステートメントにならないようにするにはどうすればよいでしょうか。
私はグーグルで周りを見てきましたが、解決策を見つけることができませんでした。のような:アンドロイド複数のオプションのケース、アンドロイド フィルター検索リストビュー
タイトルが示すように、7 つのオプションでフィルターを使用したいもののリストを取得しました。
これらすべてのオプションをケースに入れたい場合は、5040 の可能性を意味する 7*6*5*4*3*2*1 を見てみましょう。右?
では、これほど大きな switch ステートメントにならないようにするにはどうすればよいでしょうか。
私はグーグルで周りを見てきましたが、解決策を見つけることができませんでした。のような:アンドロイド複数のオプションのケース、アンドロイド フィルター検索リストビュー
このように使用します:
List<String> list = new ArrayList<String>(Arrays.asList(new String[]
{"7", "6","3", "5"})); //7*6*5*$*3*2*1
System.out.println("List Before: " + list);
for (Iterator<String> it=list.iterator(); it.hasNext();) {
if (!it.next().contains("How"))
it.remove(); // NOTE: Iterator's remove method, not ArrayList's, is used.
}
System.out.println("List After: " + list);
この方法を試してください:
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
modelValues = (ArrayList<String>) results.values; // has
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<Model> FilteredArrList = new ArrayList<Model>();
if (mOriginalValues == null) {
mOriginalValues = new ArrayList<Model>(modelValues); // saves
}
/********
*
* If constraint(CharSequence that is received) is null returns
* the mOriginalValues(Original) values else does the Filtering
* and returns FilteredArrList(Filtered)
*
********/
if (constraint == null || constraint.length() == 0) {
// set the Original result to return
results.count = mOriginalValues.size();
results.values = mOriginalValues;
} else {
Locale locale = Locale.getDefault();
constraint = constraint.toString().toLowerCase(locale);
for (String model : mOriginalValues) {
String data =model;
if (data.toLowerCase(locale).contains("7".toString())||data.toLowerCase(locale).contains("6".toString())||data.toLowerCase(locale).contains("5".toString())||data.toLowerCase(locale).contains("4".toString())) {
FilteredArrList.add(modelMyMall);
}
}
// set the Filtered result to return
results.count = FilteredArrList.size();
results.values = FilteredArrList;
}
return results;
}
};
return filter;
}