Это класс RecyclerView Holder чтобы получить изображение из элемента RecyclerView, щелкнув.
class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView gAvatar_photo;
View layoutView;
public RecyclerViewHolders(View layoutView) {
super(layoutView);
this.layoutView=layoutView;
layoutView.setOnClickListener(this);
gAvatar_photo=(ImageView) layoutView.findViewById(R.id.gAvatar_photo);
gAvatar_photo.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId()==R.id.gAvatar_photo) {
Integer img = BoyAvatarAdapter.url[getAdapterPosition()];
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(v.getContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("imgRes", img);
editor.apply();
Intent intent = new Intent(v.getContext(), ProfileActivity.class);
ProfileActivity pa = new ProfileActivity();
pa.avatar(img);
v.getContext().startActivity(intent);
Toast.makeText(v.getContext(), "" + img, Toast.LENGTH_SHORT).show();
}
}
}
создайте интерфейс в своем адаптере и вызовите его, где хотите, и получите от него int [если вы не поняли, дайте мне знать, я опубликую некоторый код]
Вы можете передать URL-адрес в ProfileActivity и получить его в свой ProfileActivity.
Intent intent = new Intent(v.getContext(), ProfileActivity.class);
intent.putExtra("image", BoyAvatarAdapter.url[getAdapterPosition()];);
v.getContext().startActivity(intent);
И получить переданный идентификатор ресурса в ProfileActivity onCreate ()
int image = getIntent().getIntExtra("image", 0); // or use getStringExtra() if you have url instead of resource id.
if (image!=0){
// setImageHere.
}
Вот твой адаптер
abstract public class Adapter extends RecyclerView.Adapter<Adapter.RecyclerViewHolders>{
abstract void onItemClicked(Your data to pass);
class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView gAvatar_photo;
View layoutView;
public RecyclerViewHolders(View layoutView) {
super(layoutView);
...
@Override
public void onClick(View v) {
if (v.getId()==R.id.gAvatar_photo)
// HERE IS THE MAGIC
onItemClicked(BoyAvatarAdapter.url[getAdapterPosition()])
}
...
}
И часть активности здесь, которая улавливает ваши события кликов
public class Dummy extends AppcompatActivity{
...
RecyclerAdapter adapter = new RecyclerAdapter(){
@Override
public void onItemClicked(Your data){
//Now got your data. You can do what do you want with it.
}
}
Надеюсь, это поможет вам. Ваше здоровье
попробуй : У меня есть адаптер, который получает изображение из ImageVIew и отправляет ImageView в другой фрагмент, мне нужно другое действие, просто не используйте getArgument (); или вы можете выполнить поиск о передаче данных намерению
в вашем держателе onclick () добавьте этот код
Drawable myDrawable = mImageView.getDrawable();
BitmapDrawable bitmapDrawable = ((BitmapDrawable) myDrawable);
mBitmap = bitmapDrawable.getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageBytes = stream.toByteArray();
mBundle.putByteArray("ResID", imageBytes);
Fragment fragment = new Edit_Profile_Fragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragment.setArguments(mBundle);
fragmentTransaction.commit();
и использовать для другого класса acitivty / fragment
byte[] byteArray = getArguments().getByteArray("ResID");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
mImage_profile.setImageBitmap(bmp);
это тоже будет работать
Отметьте это stackoverflow.com/questions/50127376/…