Java 获取视图寻呼机的正确实例
我使用此代码在视图寻呼机中显示1个imageView和1个textViewJava 获取视图寻呼机的正确实例,java,android,android-viewpager,Java,Android,Android Viewpager,我使用此代码在视图寻呼机中显示1个imageView和1个textView @Override public Object instantiateItem(ViewGroup view, int position) { View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false); assert imageLayout != null; tv=(Te
@Override
public Object instantiateItem(ViewGroup view, int position) {
View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false);
assert imageLayout != null;
tv=(TextView)imageLayout.findViewById(R.id.textView1);
tv.setTypeface(typeface);
tv.setText(ItemListApplication.names.get(position).getDesc());
pos = position; // saved the current position in pos
ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);
imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
spinner.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason.getType()) {
case IO_ERROR:
message = "Input/Output error";
break;
case DECODING_ERROR:
message = "Image can't be decoded";
break;
case NETWORK_DENIED:
message = "Downloads are denied";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case UNKNOWN:
message = "Unknown error";
break;
}
Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
}
});
view.addView(imageLayout, 0);
return imageLayout;
}
我想从ActionBar中的按钮将该图像和文本发布到facebook上,但使用instantiateItem()中的pos=position
有时会得到错误的位置(表示不同的图像)
如何获得正确的位置,以便发布正确的数据。此外,我没有使用片段
我希望问题是清楚的
请帮助……实例化项(视图组视图,int位置)
中的位置
参数不代表ViewPager的当前可见项
查看寻呼机在当前可见项的左侧和右侧缓存一个项。例如,如果ViewPager的当前索引位于[5],则ViewPager已在[5]的左侧和右侧实例化了一个项。因此,它缓存了[4][5][6]
如果ViewPager的当前索引位于[5],并且如果向右导航,则当前索引将变为[6]。项目[7]将被实例化,现在instanceItem()
中的position
param将为7。它缓存了[5][6][7]
如果ViewPager的当前索引位于[5],并且如果向左导航,则当前索引将变为[4]。项目[3]将被实例化,现在instanceItem()
中的position
param将为3。并缓存了[3][4][5]
要获取ViewPager的当前索引,请从活动的任何一点使用:
int currentPostion= mViewPager.getCurrentItem();
但是,如果视图分页器已经到达第一个和最后一个索引,则getCurrentItem()返回0。您可能需要覆盖ViewPager的PageChangeListener的onPageSelected()
,如下所示
int pos;//to track the current page
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
pos=position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
我使用了此方法,但此方法在第一个和最后一个寻呼机中失败!