Reputation: 3254
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(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());
}
Upvotes: 3
Views: 6965
Reputation: 5850
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);
}
Upvotes: 0
Reputation: 3254
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;
}
Upvotes: 3
Reputation: 501
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.
Upvotes: -2