开发者

Custom ViewPager

How can i create a customized ViewPager ? To instantiate a page in the ViewPager it's something like this :

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

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

    return tv;
}

is there a way to inflate like this in a Class extended from an Adapter :

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


This is a mere example, but it's working quiete well.

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


Tsunaze is right. Also, there is another way of doing that. If you are using Fragments to set the UI View, you can use, getItem(int position), from FragmentPagerAdapter and then use onCreateView method from Fragment class.

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

    Log.d(TAG, "getItem");

    return ImageListFragment.newInstance(position, mList);
}


Subclass the PagerAdapter class and override the corresponding methods.

Actually, if you look at the source code, you can only pass a PagerAdapter object to setAdapter() so the answer is no.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜