Android过滤对象列表

时间:2013-04-17 14:53:00

标签: java android list filter

我的问题类似于:java Best way to Filter list of object

  

我有一个对象列表说Sales。我只想要Sales对象   其产品与另一个列表中的产品相匹配,比如saleProductList。

     

除了循环之外,还有更好的方法吗。

但是我希望能够使用android可访问的代码进行过滤,例如这些库需要在Android操作系统上运行良好,并在Android操作系统上运行。我希望避免为我认为常见的问题制作自制代码,有什么建议吗?

2 个答案:

答案 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();

希望有所帮助