gpt4 book ai didi

android - 从 ViewPager 获取焦点 View 无法正常工作

转载 作者:太空狗 更新时间:2023-10-29 13:30:56 32 4
gpt4 key购买 nike

使用 ViewPager 左右滑动切换 View 。

我有一个 pagerview 里面有各种 View (自定义 ListView , ImageView 等),当 pagerview 滑动时,子值应该根据索引更改以滚动。我的问题是,当我运行我的项目时,滑动索引后显示的是第一个索引而不是第 0 个索引的值也不合适。幻灯片大小将取决于 sqllite 数据库中的值。

调用 pagerview

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, enter image description here

这是索引第 0 个位置,应该显示在第 1 个 enter image description here

最佳答案

你可以这样写页面变化监听器类:

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

}
});

关于android - 从 ViewPager 获取焦点 View 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15518066/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com