Reputation: 8362
I have a list of view pager items, where in every row there are view pager items. I want to make the type of layout for a view pager item as shown in the image attached, where the user should be able to move the view pager using the arrow clicks too.
I am not able to get how to achieve the same, here is my code for the list adapter and pager adapter :
ListView GetView
ViewHolder holder;
if(rowView==null){
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.horizontal_list_item, parent,
false);
MyPagerAdapter adapter = new MyPagerAdapter(context);
ViewPager myPager = (ViewPager) rowView.findViewById(R.id.mypager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(4, true);
rowView.setTag(holder);
}
else{
holder = (ViewHolder) rowView.getTag();
}
PagerAdapter
@Override
public Object instantiateItem(View container, final int position) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout = (LinearLayout) inflater.inflate(
R.layout.inner_layout_file, null);
TextView tv_view = (TextView) layout.findViewById(R.id.text);
tv_view.setText("Example Item " + position);
((ViewPager) container).addView(layout);
});
return layout;
Pager Item Layout (inner_layout_file)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/inner_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6.0dip"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="Example Value"
android:textAppearance="?android:textAppearanceMedium" />
</LinearLayout>
I am not able to get where to add the arrows and where to perform their on-clicks on runtime. I want to swipe the pager views using the arrows on the left and right
Upvotes: 0
Views: 1973
Reputation: 4762
You should inflate the ViewPager within the ListView and set the Adapter for it there
This Is How you can do it...
public View getView(int position, View view, ViewGroup vGroup) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vRow=view;
final ContentHolder holder;
if(view==null){
holder=new ContentHolder();
//infalte your viewPager here
vRow=inflater.inflate(R.layout.activity_swipe_view_pager, null);
holder.vPager=(ViewPager) vRow.findViewById(R.id.ui_pager);
holder.radiogrp=(RadioGroup) vRow.findViewById(R.id.ui_radiogroup);
addRadio=new AddRadioViewSwipe(context, pageCount);
addRadio.addRadio(holder.radiogrp);
holder.radiogrp.getChildAt(0).setAlpha(1.0f);
holder.vPager.setTag(R.id.ui_pager, "hold");
vRow.setTag(holder);
}
else{
holder=(ContentHolder) vRow.getTag();
}
pagerAdpt=new ViewPagerAdapter(context, integer,R.layout.activity_viewpager_model);
Parcelable state=holder.vPager.onSaveInstanceState();
//set your adapter here
holder.vPager.setAdapter(pagerAdpt);
holder.vPager.setOffscreenPageLimit(integer.length);
holder.vPager.setTag(position);
Float den = (float) context.getResources().getDisplayMetrics().densityDpi;
holder.vPager.setPageMargin((int) -den);
holder.vPager.onRestoreInstanceState(state);
holder.vPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
for(int i=0;i<pageCount;i++){
holder.radiogrp.getChildAt(pageCount-(i+1)).setAlpha(0.5f);
}
holder.radiogrp.getChildAt(position).setAlpha(1.0f);
}
@Override
public void onPageScrolled(int position, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
return vRow;
}
Hope this could help you...
Upvotes: 1