我使用此代码在 View 寻呼机中显示 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=(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
我有时会得到错误的位置(意味着不同的位置)图像)。
如何获得正确的位置以便发布正确的数据。我也没有使用 fragment 。
我希望问题已经清楚了!
请帮忙......
最佳答案
instantiateItem(ViewGroup view, int position)
中的 position
参数并不代表 ViewPager 当前可见的项目。
查看分页器将一项缓存到当前可见项的左侧和右侧。例如,如果 ViewPager 的当前索引位于 [5],则 View 分页器已经实例化了 [5] 左侧和右侧的一项。因此,它缓存了[4][5][6]。
如果ViewPager的当前索引在[5],如果向右导航,当前索引将变为[6]。并且项目 [7] 将被实例化,现在 instantiateItem()
中的 position
参数将为 7。并且它缓存了 [5][6][7]。
如果ViewPager的当前索引位于[5],并且向左导航,当前索引将变为[4]。并且项目 [3] 将被实例化,现在 instantiateItem()
中的 position
参数将为 3。并且它缓存了 [3][4][5]。
要获取 ViewPager 的当前索引,请在 Activity 的任意位置使用此索引:
int currentPostion= mViewPager.getCurrentItem();
但是,如果 View 分页器已经到达第一个和最后一个索引,则 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) {
}
});
关于java - 获取 View 寻呼机的正确实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648975/