Reputation: 564
use the ViewPager for switching views with left/right swipe.
I have a pagerview inside that there are various view(custom list view , image view etc), When pagerview is slided the child values should be changed according to index to scroll. My problem is that when i am running my project the value is displayed of 1st index rather than 0th index also after sliding the index also is not appropriate. Slide size will depend upon the values inside the sqllite database.
Call to pagerview
pager = (ViewPager) findViewById(R.id.panelPager);
adapter = new MyPagerAdapter();
pager.setAdapter(adapter);
pager.setCurrentItem(0);
This is my pager Adapter class
public class MyPagerAdapter extends PagerAdapter {
@SuppressWarnings("deprecation")
@Override
public Object instantiateItem(View collection,int position) {
Log.d("Pos",""+position);
PagerView = new View(collection.getContext());
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
PagerView = inflater.inflate(R.layout.newmainviewpager, null, false);
lvMenu=(ListView)PagerView.findViewById(R.id.lvMenuItem);
imgMainItem=(ImageView)PagerView.findViewById(R.id.imgDisplay);
edQty=(TextView)PagerView.findViewById(R.id.edQty1);
edQty.setText("1");
btnAdd=(Button)PagerView.findViewById(R.id.btnAdd);
btnSub=(Button)PagerView.findViewById(R.id.btnsub);
tvDesc=(TextView)PagerView.findViewById(R.id.tvDesc);
btnPurchaseOrder=(Button)PagerView.findViewById(R.id.btnPlaceOrder);
btnPurchaseOrder.setOnClickListener(RevisedMainMenu.this);
imgfbConnect=(Button)PagerView.findViewById(R.id.imgfbConnect);
imgfbConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FetchImagePath fetchimage = new FetchImagePath(RevisedMainMenu.this);
fetchimage.execute("http://192.168.1.6/dat/imagepath.php");
}
});
displayMenu(position);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int qty=Integer.parseInt(edQty.getText().toString().trim());
qty=qty+1;
edQty.setText(String.valueOf(qty));
}
});
btnSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int qty=Integer.parseInt(edQty.getText().toString().trim());
if(qty>1)
{
qty=qty-1;
edQty.setText(String.valueOf(qty));
}
else
Toast.makeText(getApplicationContext(), "Invalid Operation",Toast.LENGTH_LONG).show();
}
});
lvMenu.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
SubMenuid12=ExtraSubMenuIdlst.get(position);
byte[] photo =datasource.getImagePathFromSubMenuId(ExtraSubMenuIdlst.get(position));
ByteArrayInputStream imageStream = new ByteArrayInputStream(photo);
Bitmap theImage= BitmapFactory.decodeStream(imageStream);
Bitmap bitmapScaled = Bitmap.createScaledBitmap(theImage, 300,250, true);
Drawable drawable = new BitmapDrawable(bitmapScaled);
imgMainItem.setBackgroundDrawable(drawable);
String Desc=datasource.getSubMenuDescriptionFromSubMenuId(SubMenuid12);
tvDesc.setText(Desc);
selectionPos=position;
Log.d("SelPos",""+selectionPos); //.d("das","dasdas");
//
}
});
// }
// Log.d("MenuID",MenuIdlst.get(position));
((ViewPager) collection).addView(PagerView, 0);
return PagerView;
}
@Override
public void destroyItem(final View arg0, final int arg1,
final Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(final View arg0, final Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return MenuIdlst.size();
}
}
This is index 1 which is displayed 1st ,
This is Index 0th location, which should be displayed 1st
Upvotes: 3
Views: 1909
Reputation: 3705
use
setPrimaryItem(View container, int position, Object object)
in your adapter(override it)
for this purpose.
Upvotes: 1
Reputation: 634
You can write page change listener class like this:
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int pageNum) {
// TODO Auto-generated method stub
Log.d("index", "onpagechange: " + pageNum);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
Upvotes: 1