Android 如何使用bundle-inside-RecyclerView-onclick方法发送数据

Android 如何使用bundle-inside-RecyclerView-onclick方法发送数据,android,Android,我想在recycler view oclick中发送我的姓名和图像,但我有点困惑,我应该使用并行或简单的捆绑机制,如何发送和接收它 public class FamousPeople { private static final String FAMOUS_NAME = "famous name"; private static final String FAMOUS_PHOTO="photo"; private String name; private int photo; private

我想在recycler view oclick中发送我的姓名和图像,但我有点困惑,我应该使用并行或简单的捆绑机制,如何发送和接收它

public class FamousPeople

{
private static final String FAMOUS_NAME = "famous name";
private static final String FAMOUS_PHOTO="photo";
private String name;
private int photo;
private String details;

FamousPeople(String name, int photo) {

    this.name = name;
    this.photo = photo;
}
public  FamousPeople(){


}


public String getDetails() {
    return details;
}

public void setDetails(String details) {
    this.details = details;
}

public int getPhoto() {
    return photo;
}

public void setPhoto(int photo) {
    this.photo = photo;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}


   }
传记文件夹类,我必须在其中传递图像和文本数据

 class BiographyViewHolder extends RecyclerView.ViewHolder
       implements View.OnClickListener {

   public TextView textView;
  public ImageView imageView;
List<FamousPeople> famousPeoples=GetData.getListdata();


public BiographyViewHolder(View itemView)
{
    super(itemView);
    itemView.setOnClickListener(this);
    textView= (TextView) itemView.findViewById(R.id.country_name);
    imageView= (ImageView) itemView.findViewById(R.id.country_photo);


}

@Override
public void onClick(View view) {
    Intent  intent=new Intent();
    Bundle bundle=new Bundle();

    intent.putExtras(bundle);
    view.getContext().startActivity(intent);

}

 }
class BiographyViewHolder扩展了RecyclerView.ViewHolder
实现View.OnClickListener{
公共文本视图文本视图;
公共影像视图;
List famousPeoples=GetData.getListdata();
公共传记查看文件夹(查看项目视图)
{
超级(项目视图);
setOnClickListener(这个);
textView=(textView)itemView.findViewById(R.id.country\u name);
imageView=(imageView)itemView.findViewById(R.id.country\u照片);
}
@凌驾
公共void onClick(视图){
意图=新意图();
Bundle=新Bundle();
意向。额外支出(捆绑);
view.getContext().startActivity(intent);
}
}
GetData类从该类获取数据

     public  class GetData {
    public static List<FamousPeople> getListdata() {
    List<FamousPeople> famousPeoples = new ArrayList<>();
    famousPeoples.add(new FamousPeople("rahul", R.drawable.amitabh));
    famousPeoples.add(new FamousPeople("sumit", R.drawable.cvraman));
    famousPeoples.add(new FamousPeople("neha", R.drawable.indira));
    famousPeoples.add(new FamousPeople("surbhi", R.drawable.kishorkumar));
    famousPeoples.add(new FamousPeople("rahul", R.drawable.modi));
    famousPeoples.add(new FamousPeople("sumit", R.drawable.mother));
    famousPeoples.add(new FamousPeople("neha", R.drawable.nehru)) 

    return famousPeoples;
}
公共类GetData{
公共静态列表getListdata(){
List famousPeoples=new ArrayList();
添加(新的著名人物(“rahul”,R.drawable.amitabh));
添加(新的FamousPeople(“sumit”,R.drawable.cvraman));
添加(新的FamousPeople(“neha”,R.drawable.indira));
添加(新的著名人物(“surbhi”,R.drawable.kishorkumar));
add(newfamouspeople(“rahul”,R.drawable.modi));
添加(newfamouspeople(“sumit”,R.drawable.mother));
添加(新的FamousPeople(“neha”,R.drawable.nehru))
回归名人;
}

尝试编辑
onClick()
函数,如下所示。 您只需从列表中获取数据,由
getAdapterPosition
指向,然后将它们传递给
bundle

    @Override
        public void onClick(View v) {
            Intent  intent=new Intent();
            Bundle bundle=new Bundle();
            bundle.putInt("IMAGE", famousPeoples.get(getAdapterPosition()).getPhoto());
            bundle.putString("NAME", famousPeoples.get(getAdapterPosition()).getName());
intent.putExtras(bundle);
    view.getContext().startActivity(intent);

}

尝试按如下所示编辑
onClick()
函数。 您只需从列表中获取数据,由
getAdapterPosition
指向,然后将它们传递给
bundle

    @Override
        public void onClick(View v) {
            Intent  intent=new Intent();
            Bundle bundle=new Bundle();
            bundle.putInt("IMAGE", famousPeoples.get(getAdapterPosition()).getPhoto());
            bundle.putString("NAME", famousPeoples.get(getAdapterPosition()).getName());
intent.putExtras(bundle);
    view.getContext().startActivity(intent);

}

要获得图像和名称,你必须这样做

例如:点击事件发送数据onClick()

要接受它

String drName = getIntent().getStringExtra("Name");
现在,如果您想通过意图传递图像,那么

imageView.buildDrawingCache();
Bitmap image= imageView.getDrawingCache();

Bundle extras = new Bundle();
extras.putParcelable("imagebitmap", image);
intent.putExtras(extras);
startActivity(intent);
要接受它

Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");

image.setImageBitmap(bmp);

查看更多细节和

要获取图像和名称,您必须执行以下操作

例如:点击事件发送数据onClick()

要接受它

String drName = getIntent().getStringExtra("Name");
现在,如果您想通过意图传递图像,那么

imageView.buildDrawingCache();
Bitmap image= imageView.getDrawingCache();

Bundle extras = new Bundle();
extras.putParcelable("imagebitmap", image);
intent.putExtras(extras);
startActivity(intent);
要接受它

Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");

image.setImageBitmap(bmp);


仔细查看更多细节,

并行/序列化或简单捆绑机制在您的情况下都很好,但与并行相比,序列化的性能较慢,我将使用xml拉式解析器来获取数据,因此我有点困惑何时使用并行,何时使用并行/序列化或simp的简单捆绑le bundle机制在您的情况下很好,但与Paracable相比,序列化的性能较慢,我将使用xml pull解析器来获取数据,因此我对何时使用Paracable和何时使用simple bundle有点困惑我获取名称但不接收图像,请参阅我在回答栏中添加的尝试使用setImageDrawable()代替setImageResource()。还应打印一些日志以获取传递的值和接收到的值i m获取名称但未接收图像,请参阅我在回答列中添加的尝试使用setImageDrawable()代替setImageResource()。还应打印一些日志以获取传递的值和接收到的值。这不起作用。我调试活动接收图像的区域,图像到达变量但不显示它,这是一个问题,如果您使用的是private int photo;for photo而不是pass int in intent。如果您获取的是@rahulvyas值,则设置该图像。我想说的是,当我启动调试会话时,图片的id出现了,但图片没有显示在ImageView上。问题解决了,因为我在xml image View中犯了错误。是的,您已经按照我的回答中所述的int格式拍摄了图像,所以您无法获取该图像。@rahulvyasno它不起作用。我调试活动接收到images,images正在进入变量,但没有显示它,这是一个问题,如果您使用private int photo;for photo而不是pass int in intent。如果您获得@rahulvyas值,则设置该图像。我要说的是,当我启动调试会话时,图片的id出现了,但图片没有显示在imagesviews上,这是一个问题由于我在xml图像视图中犯了错误,所以无法解决问题是的,您已经按照我的回答中所述的int格式拍摄了图像,所以您无法获取该图像。@rahulvyas