как обновить этот просмотрщик, который показывает результаты моего поиска при каждом поиске - PullRequest
0 голосов
/ 09 февраля 2019

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

Я попытался установить для Viewpageradaptor значение null и сделать другой адаптер, но он не работает, и приложение вылетает.

 public class MyViewPagerAdapter extends PagerAdapter {

private Context context;
public String data;

 public MyViewPagerAdapter(Context context,Data data) {
    this.context = context;
 //getting url from main activity
    this.data=data;}

  @Override
  public Object instantiateItem(@NonNull ViewGroup collection, int position) {
    LayoutInflater inflater = LayoutInflater.from(context);
    ViewGroup layout = (ViewGroup)inflater.inflate(R.layout.object_details_image, collection, false);
    ImageView pagerImage = layout.findViewById(R.id.pagerImage);

     //sending image view to another class to get the image from the internet and  show it in my imageview
     //Downloader is a class that I made to download the images and show them in my Imageview


   new Downloader().showImage(pagerImage ,data);


     collection.addView(layout);
      return layout;
   }

   @Override
 public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object view) {
       container.removeView((View) view);
    }

   @Override
   public int getCount() {
   return this.images.size();
   }

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
    return view == object;
}
   }

в моей основной деятельности

    viewPager.setAdapter(new MyViewPagerAdapter(MyApp.getContext(), "image url")

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

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

 viewPager.setAdapter(new MyViewPagerAdapter(MyApp.getContext(), "new image url")
0 голосов
/ 09 февраля 2019

Вам просто нужно очистить массив this.images / List / ArrayList и вызвать adapter.notifyDataSetChanged(); на адаптере viewPager.

, если this.images является ArrayList, то:

адаптер.images.clear ();adapter.notifyDataSetChanged ();

, если this.images является списком, то:

adapter.images = new ArrayList();
adapter.notifyDataSetChanged();
...