0

J'ai un ArrayList de ma classe de modèle personnalisé que je suis l'instanciation par URL des images prises à partir d'Internet dans mon Home_Fragment en utilisant un AsyncTaskMise à jour des données Viewpager dynamiquement

La première fois de la liste est créée elle contient 12 articles/URL du site Web. Maintenant, je passe ces derniers sur une FullscreenView Activity qui est lié à mon ViewPager Adapter

-> J'ai mis un onLoadMoreListener dans mon Home_Fragment qui ajoute d'autres éléments au ArrayList, maintenant je veux les ajouter à mon ViewPager Adapter dynamique, Comment puis-je accomplir cela?

Home_Fragment

class ReadHTML extends AsyncTask<String, Integer, String> { 

    List list; 

    @Override 
    protected String doInBackground(String... params) { 
      try { 

       Document document = Jsoup.connect(params[0]).get(); 
       Element wall = document.select("ul.postul").first(); 
       //Log.i("LIST ", wall.toString()); 
       Elements url = wall.getElementsByAttribute("src"); 
       list = url.eachAttr("src"); 

       for (int i = 0; i < list.size(); i++) { 
        wallpaperNumber++; 
        String string = //Dummy 
        String septemp[] = //Dummy2 
        sep[1] = "http://" + string 
        wallpapersModelArrayList.add(new WallpapersModel(
          string,/// 
          sep[1], 
          "jpg", 
          wallpaperNumber 
        )); 
       } 
      }catch (Exception e){} 
      return null; 
    } 

Activité Fullscreen

setContentView(R.layout.fullscreen_activity_view); 

    toolbar = findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    viewPager = findViewById(R.id.view_pager); 

    arrayList = getIntent().getParcelableArrayListExtra("array"); 
    final int pos = getIntent().getIntExtra("position", 0); 
    fullScreenSwipeAdapter = new 
    FullScreenSwipeAdapter(FullWallpaperViewActivity.this, arrayList); 

    viewPager.setAdapter(fullScreenSwipeAdapter); 
    viewPager.setCurrentItem(pos); 
    viewPager.setOnTouchListener(new View.OnTouchListener(){} 
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {} 

ViewPager Adaptateur

public FullScreenSwipeAdapter(Activity activity, ArrayList<WallpapersModel> arrayList) { 
    this.activity = activity; 
    this.arrayList = arrayList; 
    Fresco.initialize(activity); 
} 

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

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

@Override 
public Object instantiateItem(ViewGroup container, int position) { 

    layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = layoutInflater.inflate(R.layout.fullwallpaper_view_layout, container, false); 

    draweeView = v.findViewById(R.id.full_image_view); 
    draweeView.setImageURI(arrayList.get(position).getWallpaperFullURL()); 

    container.addView(v); 

    return v; 


} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    container.removeView((CoordinatorLayout)object); 
} 

Répondre

2

Après avoir ajouté de nouveaux éléments à ArrayList, juste informer l'adaptateur des modifications à l'aide -

arrayAdapter.notifyDataSetChanged(); 
+0

J'ai essayé cela, mais cela ne semble pas fonctionner :( –

+0

@YuganshTyagi Pouvez-vous mettre à jour la question avec ce code !! Merci –

0

d'abord faire une nouvelle instance de votre ArrayAdapter et mettre tous les nouveaux articles comme celui-ci:

public class Activity() extends AppCompatActivity { 

CustomArrayAdapter mArrayAdapter; 
ViewPager mViewPager; 

public void updateViewpager(){ 
    mArrayAdapter = new ArrayAdapter(context, itemList); // old items with new items 
    mViewPager.setAdapter(mArrayAdapter); 
    mArrayAdapter.notifyDataSetChanged(); 
} 

... 

Hope it helps,