Android 将值从一个Firebase回收器适配器传递到另一个活动

Android 将值从一个Firebase回收器适配器传递到另一个活动,android,firebase,Android,Firebase,我想将产品名称、产品价格和数量的值从firebase适配器传递到产品查看器活动。 我怎样才能找到用户单击的回收器视图的哪个部分 我的主要活动是用户主页 Dataprovider.java package com.example.alok.shoppers1.User_data.RecyclerView; public class Dataprovider { private String category; private String email_id; private String p

我想将产品名称、产品价格和数量的值从firebase适配器传递到产品查看器活动。 我怎样才能找到用户单击的回收器视图的哪个部分

我的主要活动是用户主页

Dataprovider.java


package com.example.alok.shoppers1.User_data.RecyclerView;

public class Dataprovider {
private String category;
private String email_id;
private String product_id;
private String product_name;
private String product_price;
private String quantity;

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public String getProduct_name() {
    return product_name;
}

public void setProduct_name(String product_name) {
    this.product_name = product_name;
}

public String getEmail_id() {
    return email_id;
}

public void setEmail_id(String email_id) {
    this.email_id = email_id;
}

public String getProduct_id() {
    return product_id;
}

public void setProduct_id(String product_id) {
    this.product_id = product_id;
}

public String getProduct_price() {
    return product_price;
}

public void setProduct_price(String product_price) {
    this.product_price = product_price;
}

public String getQuantity() {
    return quantity;
}

public void setQuantity(String quantity) {
    this.quantity = quantity;
}

public Dataprovider(String category, String product_name, String email_id, String product_id, String product_price, String quantity) {
    this.category = category;
    this.product_name = product_name;
    this.email_id = email_id;
    this.product_id = product_id;
    this.product_price = product_price;
    this.quantity = quantity;

}

public Dataprovider() {

}
}
这是我的用户主页 用户主页

package com.example.alok.shoppers1.User_data;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

import com.example.alok.shoppers1.R;
import com.example.alok.shoppers1.User_data.RecyclerView.Dataprovider;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;


public class User_home_page extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

private RecyclerView mDataprovider;
private DatabaseReference mDatabase;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_home_page);

    mDatabase = FirebaseDatabase.getInstance().getReference().child("product");
    mDatabase.keepSynced(true);

    mDataprovider = findViewById(R.id.recycler_view);
    mDataprovider.setHasFixedSize(true);
    mDataprovider.setLayoutManager(new LinearLayoutManager(this));


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
protected void onStart() {
    super.onStart();

    FirebaseRecyclerAdapter<Dataprovider,DataproviderViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Dataprovider, DataproviderViewHolder>(Dataprovider.class,R.layout.user_item_layout,DataproviderViewHolder.class,mDatabase) {
        @Override
        protected void populateViewHolder(DataproviderViewHolder viewHolder, Dataprovider model, int position) {

            viewHolder.setProduct_price(model.getProduct_price());
            viewHolder.setQuantity(model.getQuantity());
            viewHolder.setProduct_name(model.getProduct_name());
        }
    };

    mDataprovider.setAdapter(firebaseRecyclerAdapter);
}

public static class DataproviderViewHolder extends RecyclerView.ViewHolder{
    View mview;
    public DataproviderViewHolder(View itemView){
        super(itemView);

        mview = itemView;
    }
    public void setProduct_price(String price){
        TextView prod_price = mview.findViewById(R.id.price_product_user);
        prod_price.setText(price);
    }
    public void setQuantity(String quantity){
        TextView quant = mview.findViewById(R.id.product_quantity_user);
        quant.setText(quantity);
    }
    public void setProduct_name(String name){
        TextView nam = mview.findViewById(R.id.product_name_user);
        nam.setText(name);
    }
}





@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.user_home_page, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.electronics) {
        // Handle the camera action
    } else if (id == R.id.user_profile) {
        Intent user_profile = new  Intent(getBaseContext(),User_profile.class);
        startActivity(user_profile);

    } else if (id == R.id.lifestyle) {

    } else if (id == R.id.home_appliances) {

    } else if (id == R.id.books_and_more) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}


}
package com.example.alok.shoppers1.User\u数据;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.NavigationView;
导入android.support.design.widget.Snackbar;
导入android.support.v4.view.GravityCompat;
导入android.support.v4.widget.DrawerLayout;
导入android.support.v7.app.ActionBarDrawerToggle;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.Toolbar;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.TextView;
导入com.example.alok.shoppers1.R;
导入com.example.alok.shoppers1.User_data.RecyclerView.Dataprovider;
导入com.firebase.ui.database.FirebaseRecyclerAdapter;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入java.util.ArrayList;
公共类用户主页扩展AppCompatActivity
实现NavigationView.OnNavigationItemSelectedListener{
私人RecyclerView mDataprovider;
私有数据库参考数据库;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u user\u home\u页面);
mDatabase=FirebaseDatabase.getInstance().getReference().child(“产品”);
mDatabase.keepSynced(true);
mDataprovider=findviewbyd(R.id.recycler\u视图);
mDataprovider.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(this));
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Snackbar.make(查看“替换为您自己的操作”,Snackbar.LENGTH\u LONG)
.setAction(“Action”,null).show();
}
});
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
ActionBarDrawerToggle切换=新建ActionBarDrawerToggle(
这,抽屉,工具栏,R.string.navigation\u drawer\u open,R.string.navigation\u drawer\u close);
抽屉。添加抽屉链接器(切换);
toggle.syncState();
NavigationView NavigationView=(NavigationView)findViewById(R.id.nav_视图);
navigationView.setNavigationItemSelectedListener(此);
}
@凌驾
受保护的void onStart(){
super.onStart();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(Dataprovider.class,R.layout.user\u item\u layout,DataproviderViewHolder.class,mDatabase){
@凌驾
受保护的void populateViewHolder(DataproviderViewHolder、Dataprovider型号、int位置){
viewHolder.setProduct_price(model.getProduct_price());
viewHolder.setQuantity(model.getQuantity());
viewHolder.setProduct_name(model.getProduct_name());
}
};
mDataprovider.setAdapter(firebaseRecyclerAdapter);
}
公共静态类DataproviderViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共数据提供者视图持有者(视图项视图){
超级(项目视图);
mview=项目视图;
}
公共产品价格(字符串价格){
TextView prod\u price=mview.findviewbyd(R.id.price\u product\u user);
prod_price.setText(价格);
}
公共无效设置数量(字符串数量){
TextView quant=mview.findviewbyd(R.id.product\u quantity\u user);
数量设置文本(数量);
}
public void setProduct_名称(字符串名称){
TextView nam=mview.findviewbyd(R.id.product\u name\u user);
nam.setText(姓名);
}
}
@凌驾
public void onBackPressed(){
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
if(抽屉isDrawerOpen(重力压缩机启动)){
抽屉。关闭抽屉(重力压缩机启动);
}否则{
super.onBackPressed();
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.user\u主页,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@SuppressWarnings(“StatementWithEmptyBody”)
@凌驾
公共布尔值onNavigationItemSelected(MenuItem项){
//处理导航视图项单击此处。
int id=item.getItemId();
如果(id==R.id.electronics){
//处理相机的动作
}else if(id==R.id.user\u profile){
Intent user_profile=新Intent(getBaseContext(),user_profile.class);
startActivity(用户配置文件);
}else if(id==R.id.lively){
}else if(id==R.id.家用电器){
}else if(id==R.id.books\u和\u more){
}else if(id==R.id.nav_共享){
}else if(id==R.id.nav_send){
}
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
抽屉。关闭抽屉(重力压缩机启动);
返回true;
}
}

我想将数据从用户主页传递到data viewer Intent

正如我看到您的代码一样,最好将
protected void onStart() {
super.onStart();

FirebaseRecyclerAdapter<Dataprovider,DataproviderViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Dataprovider, DataproviderViewHolder>(Dataprovider.class,R.layout.user_item_layout,DataproviderViewHolder.class,mDatabase) {
    @Override
    protected void populateViewHolder(DataproviderViewHolder viewHolder, Dataprovider model, int position) {

        viewHolder.setProduct_price(model.getProduct_price());
        viewHolder.setQuantity(model.getQuantity());
        viewHolder.setProduct_name(model.getProduct_name());
        //set your click listener here
        viewholder.setOnClickListener(new View.onClickListener(){...
         //to pass data you could either put them seperatly in new intent
        Intent i = new Intent(CurrentActivity, NextActivity.class);
        i.putExtra("quantity", model.getQuantity());
        // all data needed then
        startActivity(i);

        //or you could make your object model extend Serializable and send the object as it is to the next activity as
       i.putExtra("model", model);
     });
    }
};

mDataprovider.setAdapter(firebaseRecyclerAdapter);
}

public static class DataproviderViewHolder extends 
RecyclerView.ViewHolder{
View mview;
public DataproviderViewHolder(View itemView){
    super(itemView);

    mview = itemView;
}
public void setProduct_price(String price){
    TextView prod_price = mview.findViewById(R.id.price_product_user);
    prod_price.setText(price);
}
public void setQuantity(String quantity){
    TextView quant = mview.findViewById(R.id.product_quantity_user);
    quant.setText(quantity);
}
public void setProduct_name(String name){
    TextView nam = mview.findViewById(R.id.product_name_user);
    nam.setText(name);
}
}
//First method 
String qty = getIntent().getStringExtra("quantity");
//Second method
Model model = getIntent().getSerializableExtra("model");