Как ограничиться нет. данных в представлении переработчика - PullRequest
0 голосов
/ 02 марта 2020

Я получаю данные, используя api, для этого я использую Retrofit2, а данные RxJava2 извлекаются успешно, но я не хочу показывать целые элементы. Я просто хочу показать 5 элементов в списке.

Ниже мой код:

 Retrofit retrofit = RetrofitClient.getInstance();
     ApiService myApi = retrofit.create(ApiService.class);
     myApi.getHindiNews(data).subscribeOn(Schedulers.io())
                             .observeOn(AndroidSchedulers.mainThread())
                             .subscribe(new Observer<List<HomeHindiModel>>() {
                                 @Override
                                 public void onSubscribe(Disposable d) {

                                 }

                                 @Override
                                 public void onNext(List<HomeHindiModel> homeHindiModels) {

                                     if(homeHindiModels.size() > 0){

                                             homeHindiList.addAll(homeHindiModels);
                                             homeHindiAdapter = new HomeHindiAdapter(homeHindiList,getActivity());
                                             hindiRecycler.setAdapter(homeHindiAdapter);

                                     }
                                 }

                                 @Override
                                 public void onError(Throwable e) {

                                     Toast.makeText(getActivity(),e.getMessage(),Toast.LENGTH_SHORT).show();
                                 }

                                 @Override
                                 public void onComplete() {

                                 }
                             });

Кто-то, пожалуйста, дайте мне знать, как я могу получить желаемый результат. Любая помощь будет оценена.

СПАСИБО

Ответы [ 3 ]

2 голосов
/ 02 марта 2020

Когда вы получаете данные из удаленных ресурсов, вы можете поместить sh только 5 элементов в ваш источник данных, которые вы собираетесь отправить в адаптер.

 Retrofit retrofit = RetrofitClient.getInstance();
ApiService myApi = retrofit.create(ApiService.class);
myApi.getHindiNews(data).subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<List<HomeHindiModel>>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(List<HomeHindiModel> homeHindiModels) {

                if(homeHindiModels.size() > 0){

                  homeHindiList.addAll(homeHindiModels.subList(0, 5));

                  //  homeHindiList.addAll(homeHindiModels);
                    homeHindiAdapter = new HomeHindiAdapter(homeHindiList,getActivity());
                    hindiRecycler.setAdapter(homeHindiAdapter);

                }
            }

            @Override
            public void onError(Throwable e) {

                Toast.makeText(getActivity(),e.getMessage(),Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete() {

            }
        })
1 голос
/ 02 марта 2020

Вместо добавления всех элементов из списка homeHindiModels вы можете использовать метод подсписка arraylist для добавления только необходимых элементов. Здесь первый параметр указывает начальный индекс, из которого будет создан подсписок, а второй параметр указывает количество элементов.

homeHindiList.addAll(homeHindiModels.subList(0, 5));
1 голос
/ 02 марта 2020

в RecyclerView Adapter класс

@Override
public int getItemCount() {
    if(homeHindiList != null) {
        if(homeHindiList.size() > 5) {
            return 5;
        } else 
            return homeHindiList.size();
    } else 
        return 0;
}
...