Ниже приведены несколько фрагментов моего текущего кода, но при сильной прокрутке анимация появляется так, как будто она достигла нижней части списка, где я хотел бы добавить индикатор выполнения/спиннер, как в ленте fb/insta.
Хотя новые элементы обновляются в списке при повторной прокрутке вниз, я хочу, чтобы переход был плавным с помощью индикатора выполнения, а не выглядел каждый раз так, будто лента закончилась.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.userList);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(llm);
UserViewModel viewModel = ViewModelProviders.of(this).get(UserViewModel.class);
viewModel.init();
final UserAdapter userUserAdapter = new UserAdapter();
viewModel.userList.observe(this, pagedList -> {
userUserAdapter.setList(pagedList);
});
recyclerView.setAdapter(userUserAdapter);
}
}
Источник данных:
public class MyDataSource extends TiledDataSource {
Webservice webservice;
MyDataSource(){
webservice = WebServiceImpl.createGitHubService();
}
@Override
public int countItems() {
return DataSource.COUNT_UNDEFINED;
}
@Override
public List loadRange(int startPosition, int count) {
List gitHubUser = new ArrayList();
try {
Response response = webservice.getUsers(startPosition,count).execute();
if (response.isSuccessful() && response.code() == 200) {
gitHubUser.addAll(response.body());
} else {
Log.e("API CALL", response.message());
}
} catch (IOException e) {
e.printStackTrace();
}
return gitHubUser;
} }
ViewModel:
public class UserViewModel extends ViewModel {
public LiveData userList;
MyDataSource tDataSource;
public UserViewModel() {
}
public void init() {
userList = new LivePagedListProvider() {
@Override
protected DataSource createDataSource() {
tDataSource = new MyDataSource();
return tDataSource;
}
}.create(0, new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPageSize(20)
.setInitialLoadSizeHint(20)
.build());
}
}
Подробнее здесь: https://stackoverflow.com/questions/477 ... clervew-wi
Реализация индикатора выполнения (при прокрутке вниз, чтобы загрузить больше) в RecyclerVew с библиотекой подкачки? ⇐ Android
Форум для тех, кто программирует под Android
1727200810
Anonymous
Ниже приведены несколько фрагментов моего текущего кода, но при сильной прокрутке анимация появляется так, как будто она достигла нижней части списка, где я хотел бы добавить индикатор выполнения/спиннер, как в ленте fb/insta.
Хотя новые элементы обновляются в списке при повторной прокрутке вниз, я хочу, чтобы переход был плавным с помощью индикатора выполнения, а не выглядел каждый раз так, будто лента закончилась.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.userList);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(llm);
UserViewModel viewModel = ViewModelProviders.of(this).get(UserViewModel.class);
viewModel.init();
final UserAdapter userUserAdapter = new UserAdapter();
viewModel.userList.observe(this, pagedList -> {
userUserAdapter.setList(pagedList);
});
recyclerView.setAdapter(userUserAdapter);
}
}
Источник данных:
public class MyDataSource extends TiledDataSource {
Webservice webservice;
MyDataSource(){
webservice = WebServiceImpl.createGitHubService();
}
@Override
public int countItems() {
return DataSource.COUNT_UNDEFINED;
}
@Override
public List loadRange(int startPosition, int count) {
List gitHubUser = new ArrayList();
try {
Response response = webservice.getUsers(startPosition,count).execute();
if (response.isSuccessful() && response.code() == 200) {
gitHubUser.addAll(response.body());
} else {
Log.e("API CALL", response.message());
}
} catch (IOException e) {
e.printStackTrace();
}
return gitHubUser;
} }
ViewModel:
public class UserViewModel extends ViewModel {
public LiveData userList;
MyDataSource tDataSource;
public UserViewModel() {
}
public void init() {
userList = new LivePagedListProvider() {
@Override
protected DataSource createDataSource() {
tDataSource = new MyDataSource();
return tDataSource;
}
}.create(0, new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPageSize(20)
.setInitialLoadSizeHint(20)
.build());
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/47733276/implementing-progress-bar-when-scrolling-down-to-load-more-in-a-recyclervew-wi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия