2016-10-20 3 views
0

Я использую утилиту Realm recyclerview.Нет такого исключения метода для зависимостей

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

Вместе с нормальным Realm 2.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)

Я думаю, что его, потому что я использую версию области действия это намного выше, чем поддержка recyclerview. Есть ли способ запустить 2 разных версии Realm без ошибки дубликатов в APK? или есть способ самостоятельно создать recyclerview, не используя тот, который я сейчас использую? Это не должно быть фантазией. Базовый будет делать.

ответ

1

Вот что такое проект realm/realm-android-adapters для.

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

С RealmRecyclerViewAdapter.

EDIT:

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); 
     } 
    }; 
+0

у вас есть пример того, как использовать его? – Reshad

+0

Да, хотя это довольно просто – EpicPandaForce

+0

Так что мне не нужно создавать пользовательский класс адаптера? это все? – Reshad

Смежные вопросы