我的问题类似于:java Best way to Filter list of object
我有一个对象列表说Sales。我只想要Sales对象 其产品与另一个列表中的产品相匹配,比如saleProductList。
除了循环之外,还有更好的方法吗。
但是我希望能够使用android可访问的代码进行过滤,例如这些库需要在Android操作系统上运行良好,并在Android操作系统上运行。我希望避免为我认为常见的问题制作自制代码,有什么建议吗?
答案 0 :(得分:3)
mFinalList will contain filtered data.
List<Object> mFinalList=new ArrayList<>();
for (Object person : listData) {
if (person.getNameType().equalsIgnoreCase("somename")) {
mFinalList.add(person);
}
}
}
答案 1 :(得分:1)
如果您的目标是在简单约束上过滤列表(List或ArrayList)并在 ListView 中显示数据,则可以直接在您的可过滤中使用界面可过滤适配器如下:
public class AdapterFilterable extends BaseAdapter implements Filterable {
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.values != null) {
_arrayList = (List<object>) results.values;
}
else {
_arrayList = ApplicationGlobal._dataManager.get_ArraylistFull();
}
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<YourObject> filteredList = new ArrayList<YourObject>();
//Do your filtering operation with the constraint String
//Return result for publishResults to use it
results.count = filteredList.size();
results.values = filteredList;
return results;
}
};
return filter;
}
要使用过滤器,例如何时在侦听中搜索或仅使用约束过滤它,您只需要:
_yourAdapter.getFilter().filter(String yourConstraintString);
否则,如果您想过滤复杂的数据,您当然可以使用For循环过滤,然后执行 notifyDataChanged();
希望有所帮助