java - 没有这样的方法依赖异常

标签 java android android-recyclerview realm

我正在使用 Realm recyclerview。

compile ('com.github.thorbenprimke:realm-recyclerview:0.9.4') {
    exclude module: 'realm-android'
}

与普通Realm v2.0.2(最新)一起使用

问题是当我现在运行代码时我得到了

java.lang.NoSuchMethodError: No virtual method getTable()Lio/realm/internal/TableOrView; in class Lio/realm/RealmResults; or its super classes (declaration of 'io.realm.RealmResults' appears in /data/data/pandapixl.nl.studiebarometer/files/instant-run/dex/slice-io.realm-realm-android-library-2.0.2_65286432d702dab629d2322a66a4c74d2cf9a7e2-classes.dex) at io.realm.RealmBasedRecyclerViewAdapter.(RealmBasedRecyclerViewAdapter.java:162) at io.realm.RealmBasedRecyclerViewAdapter.(RealmBasedRecyclerViewAdapter.java:129) at io.realm.RealmBasedRecyclerViewAdapter.(RealmBasedRecyclerViewAdapter.java:119)

我认为这是因为我使用的 Realm 版本比recyclerview支持的要高得多。有没有办法运行 2 个不同版本的 Realm,而不会在 APK 中出现重复错误?或者有没有一种方法可以自己创建一个回收 View 而不使用我现在正在使用的 View ?它不需要很花哨。一个基本的就可以了。

最佳答案

这就是realm/realm-android-adapters项目是为了。

compile 'io.realm:android-adapters:1.3.0'

使用RealmRecyclerViewAdapter

编辑:

    adapter = new RealmRecyclerViewAdapter<Dog, DogViewHolder>(getContext(), realm.where(Dog.class).findAllAsync(), true) {
        @Override
        public DogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new DogViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_dog_item, parent, false));
        }

        @Override
        public void onBindViewHolder(DogViewHolder holder, int position) {
            Dog dog = getData().get(position);
            holder.bind(dog);
        }
    };
    recyclerView.setAdapter(adapter);

或者

    public class DogAdapter extends RealmRecyclerViewAdapter<Dog, DogViewHolder> {
        public DogAdapter(Context context, RealmResults<Dog> results) {
            super(context, results, true);
        }

        @Override
        public DogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new DogViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_dog_item, parent, false));
        }

        @Override
        public void onBindViewHolder(DogViewHolder holder, int position) {
            Dog dog = getData().get(position);
            holder.bind(dog);
        }
    };

关于java - 没有这样的方法依赖异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162070/

相关文章:

Javafx SSL 客户端配置以使用我的 Spring boot ssl 安全 Rest Api

java - URI 方案定义?

Android 5 lollipop 更新删除所有 AIR 应用程序

android - FindViewById 不适用于按钮

android - 如何使用 StaggeredLayoutManager 实现无限滚动

android - 指数级提高 RecyclerView 中的滚动速度? (可穿戴)

java - BufferedReader 和扫描仪 : limit the number of input characters

java - 良好的 Java 社区和资源

android - 无法解析 : com. google.code.gson :gson. 2.2.2

java - 从一个回收器 View 中删除一项并将其添加到另一个回收器 View 中