【问题标题】:Custom ViewPager自定义 ViewPager
【发布时间】:2011-07-25 19:35:33
【问题描述】:

如何创建自定义的ViewPager? 在ViewPager 中实例化一个页面是这样的:

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;
}

有没有办法在从适配器扩展的类中像这样膨胀:

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()); 
            }

【问题讨论】:

    标签: java android view adapter


    【解决方案1】:

    这只是一个示例,但它运行良好。

    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】:

      纲泽是对的。此外,还有另一种方法。如果您使用 Fragments 来设置 UI View,您可以使用 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);
      }
      

      【讨论】:

        【解决方案3】:

        继承 PagerAdapter 类并覆盖相应的方法。

        其实看源码的话,只能传一个PagerAdapter对象给setAdapter()所以答案是否定的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-04
          • 1970-01-01
          相关资源
          最近更新 更多