这是从点击的RecyclerView项目中获取图像的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();
}
}
}发布于 2018-08-14 13:31:53
您可以将url传递给ProfileActivity,并在您的ProfileActivity中获得额外的url。
Intent intent = new Intent(v.getContext(), ProfileActivity.class);
intent.putExtra("image", BoyAvatarAdapter.url[getAdapterPosition()];);
v.getContext().startActivity(intent);并在ProfileActivity onCreate()中获取传递的资源id
int image = getIntent().getIntExtra("image", 0); // or use getStringExtra() if you have url instead of resource id.
if(image!=0){
// setImageHere.
}发布于 2018-08-14 18:48:08
这是您的适配器
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.
}
}希望能对你有所帮助。干杯
发布于 2018-08-14 19:06:12
尝试一下:我让适配器从ImageVIew获取图像,并将ImageView发送到您需要的其他片段,但不要使用getArgument();或者您可以搜索有关将数据传递给intent的信息
在您的控制器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();并用于其他类的活动/片段
byte[] byteArray = getArguments().getByteArray("ResID");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
mImage_profile.setImageBitmap(bmp); 它也会正常工作
https://stackoverflow.com/questions/51834147
复制相似问题