Ниже приведены несколько фрагментов моего текущего кода, но при сильной прокрутке анимация появляется так, как будто она достигла нижней части списка, где я хотел бы добавить индикатор выполнения/спиннер, как в ленте 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