首页 > 解决方案 > 如何更新每次搜索时显示我的搜索结果的浏览器

问题描述

我有一个从服务器获取书籍图片的书籍搜索应用程序。如何删除已在我的 viewpager 中显示的先前搜索结果并显示一个新结果?

我试图将 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")

标签: androidandroid-viewpager

解决方案


您只需要清除this.imagesarray/List/ArrayList 并调用adapter.notifyDataSetChanged();viewPager 适配器。

如果this.images是 ArrayList 则:

适配器.images.clear(); 适配器.notifyDataSetChanged();

如果this.images是一个列表,那么:

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

推荐阅读