Android RecyclerView + ActiveAndroid

Каков предпочтительный способ заполнения RecyclerView и отслеживания изменений данных с помощью ActiveAndroid ORM?

Я недавно задал вопрос по этой теме. Но это слишком многословно, и люди настолько ленивы, что кто-то почти не читал его до конца.

Сама его суть: есть ли у кого-нибудь рабочий пример RecyclerView, заполненный из базы данных через ActiveAndroid?

Я использовал эту библиотеку один раз, но с ListView . Я думаю, что этот код должен работать с RecyclerView :

 /* The database */ @Table(name = "Person") public class Person extends Model { @Column(name = "Name") public String name; @Column(name = "Age") public int age; } /* Your MainActivity */ List<Person> list = new ArrayList<>(); private RecyclerView rv; /* Activity onCreate */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); list = getList(15); rv = (RecyclerView) findViewById(R.id.recycler_view); rv.setLayoutManager(new LinearLayoutManager(this)); rv.setAdapter(new Adapter()); } private List<Person> getList(int age){ return new Select() .from(Person.class) .where("Age = ?", age) .orderBy(/* order you like */) .executeSingle(); } private class Adapter extends RecyclerView.Adapter<Adapter.Holder> { @Override public Adapter onCreateViewHolder(ViewGroup parent, int viewType) { // you should inflate the layout you want be laid in every row of the recycler view. Im just inflating a text view for convinence return new Holder(LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false)); } @Override public void onBindViewHolder(Holder holder, int position) { // assign values to all view in the holder. holder.tv.setText(list.get(position).name); } @Override public int getItemCount() { return list.size(); } public class Holder extends RecyclerView.ViewHolder { // here you load all the view in your layout TextView tv; public Holder(View itemView) { super(itemView); tv = (TextView) itemView; } } } 

Здесь я предполагаю, что вы уже создали и сохранили значения в базе данных, поскольку вопрос требует только заполнить из базы данных.

Я не тестировал его, но думаю, он должен работать.

Для реализации этого может быть использован шаблон. Используйте BroadcastReceiver, чтобы уведомлять о своей деятельности всякий раз, когда вы вносите изменения в свою базу данных (просто отправляйте явное намерение вашей деятельности и реализуйте activity.onNewIntent ()).

Используйте LocalBroadcastManager для отправкиBroadCast в свой BroadCastReceiver, когда вы закончите добавлять свои изменения в базу данных. Надеюсь, эта помощь.

Intereting Posts
Android ListFragment не сохраняет пакет в onSaveInstanceState () / не извлекает пакет в onActivityCreated () Есть ли способ позвонить кому-нибудь и воспроизвести аудиофайл в андроиде? Как добавить CustomView к моей пользовательской клавиатуре в Android, как GIF-клавиатура Android – SQLite ContentResolver вставка / удаление / обновление в потоке пользовательского интерфейса? Нет результатов с пользовательским фильтром ArrayAdapter Правильно прокручивать EditText в режиме просмотра Стратегия Android для отслеживания сеанса входа в систему Как сохранить изображение в базе данных Sugar ORM? Использовать макет местоположения без установки его в настройках Почему атрибут LinearLayout «layout_weight» кажется противоположным тому, что я думаю, что он должен делать? Закрытие диалогового окна предупреждения в андроиде при нажатии кнопки в первый раз Загрузка изображения Base64 VS Бинарная загрузка изображения? Рекомендации по объединению списков и списков, таких как Market Приложение не должно отображаться в последнем списке приложений после завершения действия, если приложение ранее не отображало список последних приложений Возможно ли иметь несколько замков для пробуждения?