2011-07-25 9 views
3

カスタマイズしたViewPagerを作成するにはどうすればよいですか?カスタムViewPager

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.the_layout, null); 
    } 
    CustomView cv = items.get(position); 
    if (cv != null) { 
      TextView text = (TextView) v.findViewById(R.id.text); 
      if (text != null) { 
        ticker.setText(cv.getText()); 
      } 

答えて

3

これは単なる例ですが、うまく動作しています。

public Object instantiateItem(View collection, int position) { 
     LayoutInflater inflater = (LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.search_result, null); 
     // 
     TextView title = (TextView)layout.findViewById(R.id.search_result_title); 
     TextView body = (TextView)layout.findViewById(R.id.search_result_body); 
     TextView byline = (TextView)layout.findViewById(R.id.search_result_byline); 
     TextView day = (TextView)layout.findViewById(R.id.search_result_date_day); 
     TextView month = (TextView)layout.findViewById(R.id.search_result_date_month); 
     TextView year = (TextView)layout.findViewById(R.id.search_result_date_year); 
     // 
     title.setText(list_title.get(position).toString()); 
     body.setText(list_body.get(position).toString()); 
     day.setText(list_day.get(position).toString()); 
     month.setText(list_month.get(position).toString()); 
     year.setText(list_year.get(position).toString()); 
     byline.setText(list_byline.get(position).toString()); 
     // 
     ((ViewPager) collection).addView(layout,0); 
     return layout; 
    } 
-2

サブクラスPagerAdapterクラスと上書き:アダプターから拡張したクラスで、次のように膨らませる方法がある

  public Object instantiateItem(View collection, int position) { 
        TextView tv = new TextView(cxt); 
        tv.setText("Bonjour PAUG " + position); 
        tv.setTextColor(Color.WHITE); 
        tv.setTextSize(30); 

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

        return tv; 
      } 

: が、それはこのようなものだViewPagerでページをインスタンス化するには対応する方法。

実際には、ソースコードを見ると、PagerAdapterオブジェクトをsetAdapter()に渡すだけで、答えは「no」になります。

0

津波は正しいです。また、それを行う別の方法があります。 Fragmentを使用してUIビューを設定している場合は、FragmentPagerAdapterからgetItem(int position)を使用し、FragmentクラスのonCreateViewメソッドを使用できます。

@Override 
public Fragment getItem(int position) { 
    // TODO Auto-generated method stub 

    Log.d(TAG, "getItem"); 

    return ImageListFragment.newInstance(position, mList); 
}