Пагинация комнаты Android не работаетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пагинация комнаты Android не работает

Сообщение Anonymous »

Я пытаюсь использовать Android Room API для загрузки записей из sQlite на страницы.

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

Это мой класс модели представления

Код: Выделить всё

public class UserViewModel extends ViewModel {

public LiveData
> userList;

public UserViewModel() {

}

public void init(UserDao userDao) {
PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()).setEnablePlaceholders(true)
.setPrefetchDistance(10)
.setPageSize(20).build();

userList = (new LivePagedListBuilder(userDao.usersByFirstName(),
pagedListConfig))
.build();

}
}
Постраничный адаптер

Код: Выделить всё

public class UserAdapter extends PagedListAdapter {

protected UserAdapter() {
super(User.DIFF_CALLBACK);
}

@Override
public UserItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View view = layoutInflater.inflate(R.layout.item_user_list, parent, false);
return new UserItemViewHolder(view);
}

@Override
public void onBindViewHolder(UserItemViewHolder holder, int position) {
User user= getItem(position);
if(user!=null) {
holder.bindTo(user);
}
}

static class UserItemViewHolder extends RecyclerView.ViewHolder {
TextView userName, userId;

public UserItemViewHolder(View itemView) {
super(itemView);
userId = itemView.findViewById(R.id.userId);
userName = itemView.findViewById(R.id.userName);
}

public void bindTo(User user) {
userName.setText(user.firstName);
userId.setText(String.valueOf(user.userId));
}
}
}
Привязка с помощью переработчика Просмотр:

Код: Выделить всё

  UserViewModel viewModel =
ViewModelProviders
.of(this)
.get(UserViewModel.class);
viewModel.init(userDao);
final UserAdapter userUserAdapter = new UserAdapter();

viewModel.userList.observe(this, pagedList -> {
Toast.makeText(this, "Page " + pagedList.size(), Toast.LENGTH_SHORT).show();
Log.e("Paging ", "Page " + pagedList.size());
userUserAdapter.setList(pagedList);
});

recyclerView.setAdapter(userUserAdapter);

02-18 10:19:40.409 15310-15310/com.androidkt.archpaging E/Paging: Страница
200< /p>


Есть идеи, чего мне не хватает.

Подробнее здесь: https://stackoverflow.com/questions/488 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»