я пытаюсь открыть коробку Диалога с Ресайклером View Image Нажмите ... Диалоговое окно Содержит ViewPager сделать Размах View Gallery ..ошибка в диалоговом окне с ViewPager
кода для открытия диалогового
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(holder.itemView.getContext());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(true);
dialog.setContentView(R.layout.activity_fullscreen_image);
ImageView back=(ImageView)dialog.findViewById(R.id.back);
ViewPager viewPagerPhotoSlideShow = (ViewPager) dialog.findViewById(R.id.pager);
ArrayList<String> pagerListItems=new ArrayList<String>();
pagerListItems.add(0,"https://firebasestorage.googleapis.com/v0/b/zumi-60a8f.appspot.com/o/Chat_Images%2Fcropped-1222406361.png?alt=media&token=22b8673f-5602-48d4-980f-986d505d2d8f");
pagerListItems.add(1,"https://firebasestorage.googleapis.com/v0/b/zumi-60a8f.appspot.com/o/Chat_Images%2Fcropped1611377016.png?alt=media&token=e7a40c6c-35ad-48ee-80ca-656384fcf68c");
FullScreenImageAdapter adapterPhotoViewPager = new FullScreenImageAdapter(dialog.getOwnerActivity(), pagerListItems);
viewPagerPhotoSlideShow.setAdapter(adapterPhotoViewPager);
viewPagerPhotoSlideShow.setCurrentItem(0);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
lp.gravity = Gravity.CENTER;
Window window = dialog.getWindow();
window.setAttributes(lp);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
Adapter Код:
public class FullScreenImageAdapter extends PagerAdapter {
private Activity _activity;
private ArrayList<String> _imagePaths;
private LayoutInflater inflater;
// constructor
public FullScreenImageAdapter(Activity activity,
ArrayList<String> imagePaths) {
this._activity = activity;
this._imagePaths = imagePaths;
}
@Override
public int getCount() {
return this._imagePaths.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imgDisplay;
// Button btnClose;
inflater = (LayoutInflater) _activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image_each, container,
false);
imgDisplay = (ImageView) viewLayout.findViewById(R.id.imgDisplay);
Glide.with(container.getContext()).load(_imagePaths.get(0))
.priority(Priority.HIGH).animate(android.R.anim.fade_in)
.override(120, 87).fitCenter().skipMemoryCache(false)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.into(imgDisplay);
((ViewPager) container).addView(viewLayout);
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((RelativeLayout) object);
}
}
XML >>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/arrow"
android:rotation="180"
android:id="@+id/back"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
XML для каждого представления
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imgDisplay"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter" />
</RelativeLayout>
Ошибка >>>
E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: главный процесса: com.example.cosmic.zumi_test, PID: 22289 java.lang .NullPointerException: попытка вызвать виртуальный метод 'java.lang.Object android.content.Context.getSystemService (java.lang.String)' на нулевом объекте ссылка на объект на android.view.LayoutInflater.from (LayoutInflater.java:219) на com.example.cosmic.zumi_test.FullScreenImageAdapter.instantiateItem (FullScreenImageAdapter.java:56) в android.support.v4.view.ViewPager.addNewItem (ViewPager.java:1034) на android.support.v4.view.ViewPager.populate (ViewPager.java:1182) на android.support.v4.view.ViewPager.populate (ViewPager.java:1116) на android. support.v4.view.ViewPager.onMeasure (ViewPager.java:1642) на android.view.View.measure (View.java:17572) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5604) на android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1436) в android.widget.LinearLayout.measureVertical (LinearLayout.java:722) в android.widget.LinearLayout.onMeasure (LinearLayout.java:613) на android.view.View.measure (View.java:17572) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5604) на android.widget.FrameLayout.onMeasure (FrameLayout.java:436) на android. view.View.measure (View.java:17572) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5604) на android.widget.F rameLayout.onMeasure (FrameLayout.java:436) на android.view.View.measure (View.java:17572) на android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5604) на android.widget.FrameLayout. onMeasure (FrameLayout.java:436) на com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2632) в android.view.View.measure (View.java:17572) на android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2015) в android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1173) на android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1379) на android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1061) на android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5895) в android.view. Хореограф $ CallbackRecord.run (Choreographer.java:767) в android.view.Choreographer.doCallbacks (Choreographer.java:580) в android.view.Choreographer.doFrame (Choreographer.java:550) в android.view . Хореограф $ FrameDisplayEventReceiver.run (Хореограф.ява: 753) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5345) at java.lang.reflect.Method.invoke (собственный метод) в java.lang.reflect.Method.invoke (Method.java:372) по адресу com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. Java: 947) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:742)
Что о отображении разных изображений в разных слайдах ... –
Ок: внутри метода .load вызова Glide напишите: «_imagePaths.get (position)», вы делать всегда "_imagePaths.get (0)" –
см. мой обновленный ответ –