Android 如何使用bundle-inside-RecyclerView-onclick方法发送数据
我想在recycler view oclick中发送我的姓名和图像,但我有点困惑,我应该使用并行或简单的捆绑机制,如何发送和接收它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
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