gpt4 book ai didi

java - 获取 View 寻呼机的正确实例

转载 作者:行者123 更新时间:2023-12-02 05:39:15 25 4
gpt4 key购买 nike

我使用此代码在 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 的 PageChangeListeneronPageSelected(),如下所示。

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/

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