我正在显示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;
}
我想发布那张图片& Facebook上的文字来自ActionBar中的按钮,但在pos=position
中使用instantiateItem()
我有时会得到错误的位置(意味着不同的图像)。
如何获得正确的位置,以便发布正确的数据。我也不是在使用片段。
我希望问题很清楚!
请帮忙......
答案 0 :(得分:2)
position
中的instantiateItem(ViewGroup view, int position)
参数不代表ViewPager当前可见的项目。
查看寻呼机将一个项目缓存到当前可见项目的左侧和右侧。例如,如果ViewPager的当前索引为[5],则视图寻呼机已经在[5]的左侧和右侧实例化了一个项目。因此,它缓存了[4] [5] [6]。
如果ViewPager的当前索引为[5],并且向右导航,则当前索引将变为[6]。项目[7]将被实例化,现在position
中的instantiateItem()
参数将为7.并且它缓存[5] [6] [7]。
如果ViewPager的当前索引为[5],如果向左导航,则当前索引将变为[4]。项[3]将被实例化,现在position
中的instantiateItem()
参数将为3.并且它缓存[3] [4] [5]。
要获取ViewPager的当前索引,请从活动的任何位置使用此参数:
int currentPostion= mViewPager.getCurrentItem();
但是,如果视图寻呼机已经到达第一个和最后一个索引,则getCurrentItem()返回0。您可能需要覆盖ViewPager onPageSelected()
的{{1}},如下所示。
PageChangeListener