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()代码后编辑:-

我想解释一下
意图的工作原理。使用
意图
,您可以在活动之间传递数据。请参阅my
onBindViewHolder()
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
也仅用于表示目的。如果你只是复制并粘贴我的代码,它将无法工作。这是关于做什么的大纲。显然,您必须根据您的数据进行调整。