2012-06-29 2 views
8

목록 헤더에 Viewpager (지원 라이브러리 4 사용)를 추가하려고하는데 그 중 아무 것도 표시하지 않습니다. 이게 제 코드입니다. 목록 헤더에 항목이 아니므로 문제가되지 않습니다.목록보기에서 스크롤 헤더로보기 페이지 추가하기

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

ListView를 가진 레이아웃으로 Activity를 사용해 보았습니다. ListView 위에 ViewPager를 추가했습니다. – Proxy32

+0

@ Proxy32 스크롤하는 헤더의 뷰 페이저를 고정 된 헤더가 아닌 상단에 놓고 싶습니다. 그런 식으로 시도하지 않았습니다. – user606669

답변

0

setadapter 이후의 listview 머리글 및 바닥 글 표시.

setadapter를 시도하면 뷰 페이지를 볼 수 없습니다. 뷰 페이지의 너비와 높이를 확인하십시오.

뷰어의 너비 또는 높이 값이 0 인 경우 레이아웃 패밀리가 포함 된 뷰 그룹에서 LienarLayout (또는 anyViewGroup) 및 addview 뷰 페이지를 포함하는 너비 및 높이 설정. 및 addHeader 뷰 그룹.

내 영어 실력이 좋지 않거나, 이해가되지 않는다면, 덧글을 달아주세요.

나는 도움을 바랍니다.