我是新手,想开发一个在主屏幕上显示回收者视图列表的应用程序,名称和城市等信息。但是当我点击回收列表视图项时,它会打开一个新屏幕并显示名称,地址,城市,年龄等信息。
我开发了第一部分应用程序,它显示了带有名称和城市的Recycler listview。但是我被困在第二部分,点击回收列表视图项目打开一个新屏幕,显示姓名,地址,城市,年龄等信息。
例如,
Firebase数据库
business_list
- 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
如果我点击第二项,
- mmx, north avenue, north home, big company, 3
怎么做?
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, BusinessDetailActivity.class);
context.startActivity(intent);
}
});
}
答案 0 :(得分:2)
您尚未在问题中发布数据库结构,我真的不知道您是如何存储年龄,城市和地址信息的。
所以,我只会向您提供一般性答案,我假设从datasnapshot
检索到的childEventListener
个对象包含上述信息。
假设ChildEventListener
适配器中的recyclerView
创建POJO对象,如下所示: -
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
final YourPOJO pojo = dataSnapshot.getValue(YourPOJO.class);}
它将它添加到ArrayList<YourPOJO>
对象,如下所示: -
list.add(pojo);
notifyItemInserted(list. - 1);
现在,在您的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()代码后进行编辑:
我想谈谈intents
的工作。使用intent
,您可以在活动之间传递数据。请参阅我的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, 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
中,您可以按如下方式检索传递的数据: -
String name = getIntent().getExtra("Name");
String city = getIntent().getExtra("City");
//and so on for the rest
我强烈建议您阅读on intents。