Android 如何将数据从回收器视图传递到其他活动
主屏幕上的“回收者”视图,带有值“名称”和“城市”。我想将“回收者视图”单击项目的数据传递到下一个活动 数据库结构就像Android 如何将数据从回收器视图传递到其他活动,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,主屏幕上的“回收者”视图,带有值“名称”和“城市”。我想将“回收者视图”单击项目的数据传递到下一个活动 数据库结构就像 - knjdbasgjbascacgjc - name: "intex" - address: "south avenue" - city: "south home" - description: "small company" - rating: "
- knjdbasgjbascacgjc
- name: "intex"
- address: "south avenue"
- city: "south home"
- description: "small company"
- rating: "5"
- Khasjdgjacjaghjkhb
- name: "mmx"
- address: "north avenue"
- city: "north home"
- description: "big company"
- rating: "3"
主屏幕显示以下详细信息:
- intex, south avenue, 5
- mmx, north avenue, 3
在第二个活动中,我希望显示详细信息,如单击第一项:
- intex, south avenue, south home, small company, 5
这是我的onBindViewHolder
@Override
public void onBindViewHolder(final UserViewHolder holder, final int
position) {
BusinessDetailModel businessDetailModel = list.get(position);
holder.businessName.setText(businessDetailModel.businessName);
holder.businessCity.setText(businessDetailModel.city);
holder.businessRating.setText(businessDetailModel.ratingValue + "");
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Context context = v.getContext();
intent = new Intent(context, SecondActivity.class);
context.startActivity(intent);
}
});
}
你的问题中没有公布你的数据库结构,我真的不知道你是如何存储年龄、城市和地址信息的 因此,我将为您提供一个一般性的答案,其中我假设从
childEventListener
检索的datasnapshot
对象包含上述信息
假设recyclerView
适配器中的ChildEventListener
创建POJO对象,如下所示:-
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
final YourPOJO pojo = dataSnapshot.getValue(YourPOJO.class);}
list.add(pojo);
notifyItemInserted(list. - 1);
String name = getIntent().getExtra("Name");
String city = getIntent().getExtra("City");
//and so on for the rest
并将其添加到ArrayList
对象中,如下所示:-
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
final YourPOJO pojo = dataSnapshot.getValue(YourPOJO.class);}
list.add(pojo);
notifyItemInserted(list. - 1);
String name = getIntent().getExtra("Name");
String city = getIntent().getExtra("City");
//and so on for the rest
现在,在recyclerView适配器的onBindViewHolder()
方法中,您可以调用以下命令来启动一个新活动,并从pojo传递数据:-
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
holder.yourView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new
Intent(this,SecondActivty.class);
intent.putExtra("age",list.get(position).getAge;
intent.putExtra("name",list.get(position).getName;
intent.putExtra("address",list.get(position)
.getAddress;
//and so on for the other values
startActivity(intent);
}
});
}
接下来,您可以在第二个活动中使用getIntent()
,获取值并显示它们
查看onBindViewHolder()代码后编辑:-
我想解释一下意图的工作原理。使用意图
,您可以在活动之间传递数据。请参阅myonBindViewHolder()
code
因此,对于您的代码,只需将其更改为以下内容:-
@Override
public void onBindViewHolder(final UserViewHolder holder, final int
position) {
BusinessDetailModel businessDetailModel = list.get(position);
holder.businessName.setText(businessDetailModel.businessName);
holder.businessCity.setText(businessDetailModel.city);
holder.businessRating.setText(businessDetailModel.ratingValue + "");
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Context context = v.getContext();
intent = new Intent(context, BusinessDetailActivity.class);
intent.putExtra("Name",businessDetailModel.businessName);
intent.putExtra("City",businessDetailModel.city);
intent.putExtra("Rating",businessDetailModel.ratingValue);
//And so on for the rest of the data that you want to pass to
//the second activity
context.startActivity(intent);
}
});
}
在此之后,在BusinessDetailActivity
中,您可以按如下方式检索传递的数据:-
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
final YourPOJO pojo = dataSnapshot.getValue(YourPOJO.class);}
list.add(pojo);
notifyItemInserted(list. - 1);
String name = getIntent().getExtra("Name");
String city = getIntent().getExtra("City");
//and so on for the rest
我强烈建议您仔细阅读。请澄清您使用的是列表视图
还是回收视图
。两者都有不同的实现。这将帮助我更好地帮助您。我的答案中带有onBindViewHolder
的代码应该适合您的用例。如果您仍然有问题,请发布您的onBindViewHolder
代码。这是因为我不知道您显示数据的视图。在我的回答中,holder.yourView
只是我用于表达目的的一般视图。同样,我的答案中的SecondActivity.class
也仅用于表示目的。如果你只是复制并粘贴我的代码,它将无法工作。这是关于做什么的大纲。显然,您必须根据您的数据进行调整。