如何从 PagerAdapter 对象获取当前页面字段?
How can I get current page fields from PagerAdapter object?
我正在开发一个使用 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();
这个方法时 returns 下一个离屏页面的位图。如何获取ViewPager
可见页面的位图?
对于您想要实现的目标,请使用 ViewPager 而不是 PagerAdapter,我遇到了类似的问题并使用了
onPageSelected(int currentPage)
viewpager获取当前项目显示的方法。
ViewPager class 有 getCurrrentItem()
方法。您可以使用 getCurrentItem().
获取当前页面索引
像这样使用:
viewPager.getCurrentItem()
您可以设置为:
viewPager.setCurrentItem(setCurrentItem);
我正在开发一个使用 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();
这个方法时 returns 下一个离屏页面的位图。如何获取ViewPager
可见页面的位图?
对于您想要实现的目标,请使用 ViewPager 而不是 PagerAdapter,我遇到了类似的问题并使用了
onPageSelected(int currentPage)
viewpager获取当前项目显示的方法。
ViewPager class 有 getCurrrentItem()
方法。您可以使用 getCurrentItem().
像这样使用:
viewPager.getCurrentItem()
您可以设置为:
viewPager.setCurrentItem(setCurrentItem);