Я работаю над приложением, в котором у меня есть recyclerview во фрагменте и viewpager в другом действии, поэтому теперь я передаю изображение из recyclerview в viewpager, но проблема в том, что когда я нажимаю на recyclerview, я получаю исключение ресурс не найден.
Я искал это в Интернете и нашел этот ТАК вопрос, но он не решает проблему, поскольку просто предлагает использовать String.valueof, а я не могу сделать это в setImageresource.
Поэтому я не понимаю, в чем я ошибаюсь, поэтому, пожалуйста, кто-нибудь может помочь мне здесь. Итак, вот код для recyclerview
class VH extends RecyclerView.ViewHolder implements View.OnClickListener{
ImageView iv;
TextView tv;
HWRatioContainer ivc;
Context context;
int[] images;
CustomButton top_recycler_button;
public VH(View itemView,Context context,int[] images) {
super(itemView);
iv = (ImageView) itemView.findViewById(R.id.iv);
this.context = context;
this.images = images;
top_recycler_button = (CustomButton)itemView.findViewById(R.id.top_recycler_button);
itemView.setOnClickListener(this);
//tv = (TextView) itemView.findViewById(R.id.tv);
///ivc = (HWRatioContainer) itemView.findViewById(R.id.ivc);
/*ivc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
ivc.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
ivc.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
ivc.setTranslationX(ivc.getWidth() >> 4);
}
});*/
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View view) {
Intent intent = new Intent(context,DetailsActivity.class);
intent.putExtra("slider_image",images[getAdapterPosition()]);
intent.putExtra("transition_name", ViewCompat.getTransitionName(iv));
Pair<View,String> pair = Pair.create((View)iv,iv.getTransitionName());
ActivityOptionsCompat compat = ActivityOptionsCompat.makeSceneTransitionAnimation
((Activity)context,pair);
context.startActivity(intent,compat.toBundle());
}
}
и вот код для viewpager
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.custom_dots_layout,null);
ImageView imageView = (ImageView)view.findViewById(R.id.detail_viewpager_image);
Intent intent = new Intent();
imageView.setImageResource(intent.getIntExtra("slider_image",1));
ViewPager viewPager1 = (ViewPager)container;
viewPager1.addView(view,0);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
ViewPager viewPager = (ViewPager)container;
View view = (View)object;
viewPager.removeView(view);
}
}
Итак, как мне получить доступ к ресурсу изображения @Sam
Intent intent = new Intent(); - Это не Intent, с которого был запущен ViewPagerActivity, так что на нем не будет вашего лишнего. Вам необходимо вызвать в getIntent() на Activity.
но мое изображение находится в окне просмотра, так как мне установить ресурс изображения для просмотра в действии @MikeM.
Вы можете добавить параметр int в конструктор PagerAdapter или создать для него метод установки и т. д. Я не совсем уверен, почему вы используете ViewPager для одного образа.
Ааа ... как указал @ MikeM., вы намеренно никуда не пойдете. Общие предпочтения могут быть .. можете попробовать.
Спасибо @MikeM. Я сделал, как вы предложили, и это сработало.
@MikeM. у меня есть еще одна проблема, не могли бы вы мне что-нибудь предложить?
Возможно, если относительно быстро.
На самом деле я сделал еще один recyclerview в другой деятельности и использовал linearsnaphelper, используя этот SO post stackoverflow.com/questions/29134094/ ... но теперь он не рассматривает последний и первый элемент в recyclerview, поэтому я не знаю, что мне делать, чтобы центрировать каждый элемент, например viewpager, можешь предложить мне что-нибудь @MikeM.
Оо, вероятно, понадобится еще один вопрос, но вы пробовали PagerSnapHelper вместо этого? Я еще не использовал его, поэтому не уверен, что он решит вашу проблему, но он был создан специально для имитации ViewPager, поэтому я надеюсь, что это так.
Да @MikeM. Я тоже использовал PagerSnaphelper, но все же я не работаю как viewpager
Да, извините, для этого вам придется задать новый вопрос. Некоторое время назад я использовал LinearSnapHelper только один или два раза, и я никогда не использовал PagerSnapHelper, поэтому я действительно не смог бы ничего предложить.




Вы устанавливаете строковое значение как массив целых чисел, поэтому возникает ошибка.