Realm's。比手动过滤列表更快吗?

时间:2016-02-29 17:06:32

标签: filtering realm

我正在使用领域数据库创建一个项目。

我还有很多列表,我希望在用户输入时进行过滤。

其中最大的一个可能是客户名单

目前我通过为每个对象使用包装类来使用领域(如果有人有更好的建议,我肯定会对它开放)

我使用的对象是这样的:

public class Customer_Realm extends RealmObject{
    private int _id;
    private String _name; //...etc

    public int get_id(){ return _id; }
    public void set_id(int id) { _id = id;}
    //etc
}


Public class Customer() {
    Customer_Realm _base;
    public Customer(Customer_Realm base) { _base = base;}
    public int get_id(){ return _base.get_id(); }
    public void set_id(int id) { _base.set_id(id);}
    //...etc
}

除此之外,我还有一个用于客户对象的ArrayListAdapter。我的问题是,是吗:

public class CustomerAdapter extends ArrayListAdapter<Customer> {
   List<Customer> _customers;
   String _filter = null;

   public void set_filter(string name) {
      _filter = name;
      notifyDataSetChanged();
   }

   @override 
   public int getCount(){
      return get_visible().count();
   }

   public Customer getItem(int position){
      return get_visible().get(position);
   }

   public List<Customer> get_visible() {
      if (_filter == null)
         return _customers;
      List<Customer> visible = new ArrayList<Customer> ();
      foreach (Customer c : _customers){
         if (c.get_name().contains(_filter)
            visible.add(c);
      }
      return visible;
   }
}

或者这会更好吗?

public class CustomerAdapter extends ArrayListAdapter<Customer> {
   Realm _database;
   String _filter = null;

   public void set_filter(string name) {
      _filter = name;
      notifyDataSetChanged();
   }

   @override 
   public int getCount(){
      return get_visible().count();
   }

   public Customer getItem(int position){
      return get_visible().get(position);
   }

   public List<Customer> get_visible() {
      RealmResults<Customer_Realm> result = null;
      if (_filter == null)
         result = _database.allObjects(Customer_Realm.class);
      else
         result = _database.where(Customer_realm.class).contains("_name",_filter);

      List<Customer> visible = new ArrayList<Customer> ();
      foreach (Customer_Realm c : result){
         visible.add(new Customer(c));
      }
      return visible;
   }
}

不幸的是我的数据库只包含一小部分数据(并且windows的域没有编辑器所以我可以手动输入数据)所以当我尝试任何一种实现时我都没有看到任何差异,我想知道是否有人有任何体验当您使用具有大量数据的此类实现时会发生什么

提前感谢您提供的任何帮助

0 个答案:

没有答案