【问题标题】:can i use class that extends RealmObject as regular object? [duplicate]我可以使用扩展 RealmObject 的类作为常规对象吗? [复制]
【发布时间】:2018-04-29 11:30:34
【问题描述】:

我想使用扩展领域对象的类作为常规类,但我的 getFilter() 中有异常

ThrowingException 8,从错误线程访问的领域。在 /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsResults.cpp 第 157 行,。 抛出异常:从不正确的线程访问领域。在 /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsResults.cpp 第 157 行

这是我的适配器

List<ProductRealm> productsList, productsFiltered;
Context context;

public ProductAdapter(List<ProductRealm> productsList, Context context) {
    this.productsList = productsList;
    this.context = context;
}

@Override
public Filter getFilter() {
    Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            String charString = charSequence.toString();
            if (charString.isEmpty()) {
                productsFiltered = productsList;
            } else {
                List<ProductRealm> filteredList = new ArrayList<>();
                for (ProductRealm row : productsList) {
                    if (row.getName().toLowerCase().contains(charString.toLowerCase())) {
                        filteredList.add(row);
                    }
                }

                productsFiltered = filteredList;
            }

            FilterResults filterResults = new FilterResults();
            filterResults.values = productsFiltered;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            notifyDataSetChanged();
        }
    };

    return filter;
}

这是在我的片段中

viewModel.productsList.observe(this, new Observer<List<ProductRealm>>() {
        @Override
        public void onChanged(@Nullable List<ProductRealm> productRealms) {
            productAdapter = new ProductAdapter(viewModel.productsList.getValue(), getContext());
            rvProduct.setAdapter(productAdapter);
        }
    });

查看模型

public MutableLiveData<List<ProductRealm>> productsList = new MutableLiveData<>();

RealmResults<ProductRealm> results = realm.where(ProductRealm.class).findAll();
productsList.setValue(results);

【问题讨论】:

    标签: java android exception realm


    【解决方案1】:

    在将对象更改为unmanaged 领域对象后,您可以使用扩展 RealmObject 的类作为常规对象。

    这可以使用文档中描述的方法copyFromRealm 来实现 https://realm.io/docs/java/latest/api/io/realm/Realm.html#copyFromRealm-E-

    【讨论】:

    • 它有效!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多