2012-06-29 13 views
8

Sto tentando di aggiungere Viewpager (utilizzando la libreria di supporto4) in un'intestazione di elenco ma non viene visualizzato nulla. questo è il mio codice, per favore aiutatemi. Sarà nell'intestazione dell'elenco non come un elemento quindi non dovrebbe essere un problema.Aggiunta di viewpager come intestazione a scorrimento in listview

public class CustomActivity extends ListActivity { 

    private static int NUM_AWESOME_VIEWS = 20; 
    private Context cxt; 
    private CustomPageAdapter pageAdapter; 

     /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     String[] items = { "this", "is", "my", "list", "view", "data" }; 
     this.cxt = this; 

     ViewPager viewPager = new ViewPager(this); 

     pageAdapter = new CustomPageAdapter(); 
     viewPager.setAdapter(pageAdapter); 
     viewPager.requestLayout(); 

     getListView().addHeaderView(viewPager); 
     setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)); 

    } 

    private class CustomPageAdapter extends PagerAdapter{ 


      @Override 
      public int getCount() { 
        return NUM_AWESOME_VIEWS; 
      } 

     /** 
     * Create the page for the given position. The adapter is responsible 
     * for adding the view to the container given here, although it only 
     * must ensure this is done by the time it returns from 
     * {@link #finishUpdate()}. 
     * 
     * @param container The containing View in which the page will be shown. 
     * @param position The page position to be instantiated. 
     * @return Returns an Object representing the new page. This does not 
     * need to be a View, but can be some other container of the page. 
     */ 
      @Override 
      public Object instantiateItem(View collection, int position) { 
        TextView tv = new TextView(cxt); 
        tv.setText("Bonjour PAUG " + position); 
        tv.setTextColor(Color.WHITE); 
        tv.setTextSize(20); 

        ((ViewPager) collection).addView(tv,0); 

        return tv; 
      } 

     /** 
     * Remove a page for the given position. The adapter is responsible 
     * for removing the view from its container, although it only must ensure 
     * this is done by the time it returns from {@link #finishUpdate()}. 
     * 
     * @param container The containing View from which the page will be removed. 
     * @param position The page position to be removed. 
     * @param object The same object that was returned by 
     * {@link #instantiateItem(View, int)}. 
     */ 
      @Override 
      public void destroyItem(View collection, int position, Object view) { 
        ((ViewPager) collection).removeView((TextView) view); 
      } 



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


     /** 
     * Called when the a change in the shown pages has been completed. At this 
     * point you must ensure that all of the pages have actually been added or 
     * removed from the container as appropriate. 
     * @param container The containing View which is displaying this adapter's 
     * page views. 
     */ 
      @Override 
      public void finishUpdate(View arg0) { 

      } 


      @Override 
      public void restoreState(Parcelable arg0, ClassLoader arg1) { 

      } 

      @Override 
      public Parcelable saveState() { 
        return null; 
      } 

      @Override 
      public void startUpdate(View arg0) { 

      } 

} 

} 
+0

hai provato a utilizzare un'attività con un layout che dispone di ListView, quindi aggiungi ViewPager sopra il ListView – Proxy32

+0

@ Proxy32 Voglio visualizzare il cercapersone nell'intestazione a scorrimento non come un'intestazione fissa in alto, quindi non ho provato in quel modo. – user606669

risposta

0

visualizzabile dopo il setadapter.

se si prova setadapter e non è possibile visualizzare viewpager. controlla la larghezza e l'altezza di viewpager.

se il valore di larghezza o altezza di viewpager è 0. crea LienarLayout (o anyViewGroup) e addview viewpager in viewgroup con layoutparame include l'impostazione di larghezza e altezza. e addHeader viewgroup.

la mia abilità inglese non va bene, se non capisco, aggiungi commento me.

spero di aiutare.

Problemi correlati