左右のスワイプでビューを切り替えるには、ViewPager を使用します。
さまざまなビュー(カスタムリストビュー、画像ビューなど)がある内部にページャービューがあります。ページャービューがスライドされると、スクロールするインデックスに従って子の値を変更する必要があります。私の問題は、プロジェクトを実行しているときに、インデックスをスライドさせた後も0番目のインデックスではなく1番目のインデックスの値が表示されることです。スライドのサイズは、sqllite データベース内の値によって異なります。
ページャービューへの呼び出し
pager = (ViewPager) findViewById(R.id.panelPager);
adapter = new MyPagerAdapter();
pager.setAdapter(adapter);
pager.setCurrentItem(0);
これは私のページャー アダプター クラスです
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();
}
}
これが1番目に表示されるインデックス1で、
これは、1 番目に表示されるインデックス 0 番目の場所です。