2014-09-28 12 views
5

Używam pageradaptera i viewpagera do wyświetlania tablicy widoków, tablicy podglądu tekstu. Ale jak mogę usunąć pager po kliknięciu przycisku .Kod zewnętrzny w poniższym kodzie, ale dodałem przycisk w xml onclick powinien usunąć stronę.jak usunąć element z viewpagera i pageradaptera

http://www.androidbegin.com/tutorial/android-viewpager-gallery-images-and-texts-tutorial/

package com.androidbegin.viewpagertutorial; 

    import android.content.Context; 
    import android.support.v4.view.PagerAdapter; 
    import android.support.v4.view.ViewPager; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.view.ViewGroup; 
    import android.widget.Button; 
    import android.widget.ImageView; 
    import android.widget.RelativeLayout; 
    import android.widget.TextView; 

    public class ViewPagerAdapter extends PagerAdapter { 
     // Declare Variables 
     Context context; 
     String[] rank; 
     String[] country; 
     String[] population; 
     int[] flag; 
     LayoutInflater inflater; 

     public ViewPagerAdapter(Context context, String[] rank, String[] country, 
       String[] population, int[] flag) { 
      this.context = context; 
      this.rank = rank; 
      this.country = country; 
      this.population = population; 
      this.flag = flag; 
     } 

     @Override 
     public int getCount() { 
      return rank.length; 
     } 

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

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

      // Declare Variables 
      TextView txtrank; 
      TextView txtcountry; 
      TextView txtpopulation; 
      ImageView imgflag; 

      Button b; 

      inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View itemView = inflater.inflate(R.layout.viewpager_item, container, 
        false); 

      // Locate the TextViews in viewpager_item.xml 
      txtrank = (TextView) itemView.findViewById(R.id.rank); 
      txtcountry = (TextView) itemView.findViewById(R.id.country); 
      txtpopulation = (TextView) itemView.findViewById(R.id.population); 
      b=(Button)itemView.findViewById(R.id.button1); 


      b.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 



       } 
      }); 

      // Capture position and set to the TextViews 
      txtrank.setText(rank[position]); 
      txtcountry.setText(country[position]); 
      txtpopulation.setText(population[position]); 

      // Locate the ImageView in viewpager_item.xml 
      imgflag = (ImageView) itemView.findViewById(R.id.flag); 
      // Capture position and set to the ImageView 
      imgflag.setImageResource(flag[position]); 

      // Add viewpager_item.xml to ViewPager 
      ((ViewPager) container).addView(itemView); 

      return itemView; 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      // Remove viewpager_item.xml from ViewPager 
      ((ViewPager) container).removeView((RelativeLayout) object); 

     } 
    } 

////////////////////

// Locate the ViewPager in viewpager_main.xml 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     // Pass results to ViewPagerAdapter Class 
     adapter = new ViewPagerAdapter(MainActivity.this, rank, country, population, flag); 
     // Binds the Adapter to the ViewPager 
     viewPager.setAdapter(adapter); 

Odpowiedz

8

najpierw trzeba użyć List powodu dynamicznie usuwanie obiektów . sekund trzeba

@Override 
    public int getItemPosition(Object object){ 
     return PagerAdapter.POSITION_NONE; 
    } 

zmusić adapter do tworzenia nowej strony za każdym razem, a nie za pomocą stron w pamięci.

+0

Mam pytanie, moja aplikacja ulega awarii, gdy próbuję usunąć ostatni element z mojej listy. Mówi "java.lang.IndexOutOfBoundsException: nieprawidłowy indeks 6, rozmiar to 6". Wskazuje na tę linię: imageView.setImageResource (regionImages.get (position)); –

+0

@KalaJ opublikuj swój kod jako pytanie na SO. powiedz mi link! – mmlooloo

+0

Wyjaśniałem to, dzięki: D –