如何从 PagerAdapter 对象获取当前页面字段?
Posted
技术标签:
【中文标题】如何从 PagerAdapter 对象获取当前页面字段?【英文标题】:How can I get current page fields from PagerAdapter object? 【发布时间】:2018-05-23 03:57:42 【问题描述】:我正在开发一个使用ViewPager
和PagerAdapter
的应用程序。这工作正常,ViewPager
显示正确的内容,但我需要当前图像的位图在屏幕上移位。我写了两个方法getBitmap()
和getId()
。这是代码。
public class CursorPagerAdaptor extends PagerAdapter
private Cursor mCursor;
private Context mContext;
private Bitmap bitmap;
int id;
LayoutInflater layoutInflater;
public CursorPagerAdaptor(Context context,Cursor cursor)
mContext = context;
mCursor = cursor;
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public int getCount()
return mCursor.getCount();
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object)
return view == ((RelativeLayout) object);
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position)
View itemView= layoutInflater.inflate(R.layout.view_pager_items, container, false);
final ImageView imageView = (ImageView) itemView.findViewById(R.id.image);
final ProgressBar progressBar = (ProgressBar)itemView.findViewById(R.id.progress);
//
mCursor.moveToPosition(position);
int urlIndex = mCursor.getColumnIndex(MetaDataInfo.COLUMN_PHOTOURL);
String url = mCursor.getString(urlIndex);
int idIndex = mCursor.getColumnIndex(MetaDataInfo._ID);
id = mCursor.getInt(idIndex);
container.addView(itemView);
Glide.with(mContext)
.asBitmap()
.load(url).apply(new RequestOptions().dontAnimate().fitCenter())
.into(new SimpleTarget<Bitmap>(640,480)
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition)
progressBar.setVisibility(View.GONE);
bitmap = resource;
imageView.setImageBitmap(resource);
);
ViewGroup parent = ((ViewGroup)itemView.getParent());
if (parent!=null) parent.removeView(itemView);
container.addView(itemView);
return itemView;
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object)
container.removeView((RelativeLayout)object);
bitmap = null;
public Bitmap getBitmap()
return bitmap;
public int getId()
return id;
这工作正常,但我需要 Bitmap
和当前页面的 id 可见。
当我调用mAdapter.getBitmap();
时,此方法返回下一个屏幕外页面的位图。如何获取ViewPager
可见页面的Bitmap?
【问题讨论】:
请查看:***.com/questions/8538035/… 【参考方案1】:对于您尝试使用 ViewPager 而不是 PagerAdapter 来实现的目标,我已经经历了类似的问题并使用了
onPageSelected(int currentPage)
viewpager 获取当前项目显示的方法。
【讨论】:
您是否已将 PagerAdapter 更改为 Viewpager ? 谢谢,通过努力,我明白了。 onPageSelected 完成了这项工作【参考方案2】:ViewPager 类有getCurrrentItem()
方法。您可以使用getCurrentItem().
获取当前页面索引
像这样使用:
viewPager.getCurrentItem()
您可以设置如下:
viewPager.setCurrentItem(setCurrentItem);
【讨论】:
以上是关于如何从 PagerAdapter 对象获取当前页面字段?的主要内容,如果未能解决你的问题,请参考以下文章
Android PagerAdapter :: 将当前项目放入位图中