Android Firebase 将数据 recyclerview 传递给 recyclerview
Android Firebase pass data recyclerview to recyclerview
我想将数据 RC_1 传递给 RC_2。我怎样才能将 RecyclerView 转换为 RecyclerView?Examp.pic_1
我的firebase节点和图片一样。
My firebase node
//RC_1 结构
public class Name_Struct {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//RC_2 结构
public class Detail_Struct {
private String cat;
private String info;
private String orderid;
public String getCat() {
return cat;
}
public void setCat(String cat) {
this.cat = cat;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
RC_1 为;
//Myactivity_1
private void rc_1_get_name(){
Query query = FirebaseDatabase.getInstance().getReference()
.child(“Pro_”);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
mName.clear();
for(DataSnapshot snp : snapshot.getChildren()){
Name_Struct names = snp.getValue(Name_Struct.class);
for (DataSnapshot recipeSnapshot: snp.child(“basket”).getChildren()) {
mName.add(names);
}
}
mName_adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
RC_1 为;
//Myadapter_1
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") int position) {
final Name_Struct names = mName.get(position);
holder.name_.setText(names.getName()));
holder.relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, RC_2.class);
???
mContext.startActivity(intent);
}
}
正如我在您的屏幕截图中看到的,“Pro_”节点包含一个值为“Mike”的名称。这意味着您可以将该节点映射到 Name_Struct
类型的对象中。你正在成功地做到这一点。在同一个节点下,还有另一个名为“篮子”的节点。该节点由 Map 对象表示,其中键由这些 ID(ID_1、ID_2 等)表示,值由 Detail_Struct
对象表示。为了能够在“篮子”节点下映射数据,您必须在您的 Name_Struct
class 中添加一个新的 属性 称为 basket
,如下所示:
public class Name_Struct implements Serializable {
private String name;
private Map<String, Object> basket;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@PropertyName("Basket")
public Map<String, Object> getBasket() {
return basket;
}
public void setBasket(Map<String, Object> basket) {
this.basket = basket;
}
}
现在要将数据传递给第二个 activity,您必须添加迭代 Map 并创建一个可以添加到 Intent 中的 List<Detail_Struct>
,以便可以在第二个 activity.
我想将数据 RC_1 传递给 RC_2。我怎样才能将 RecyclerView 转换为 RecyclerView?Examp.pic_1
我的firebase节点和图片一样。 My firebase node
//RC_1 结构
public class Name_Struct {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//RC_2 结构
public class Detail_Struct {
private String cat;
private String info;
private String orderid;
public String getCat() {
return cat;
}
public void setCat(String cat) {
this.cat = cat;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
RC_1 为; //Myactivity_1
private void rc_1_get_name(){
Query query = FirebaseDatabase.getInstance().getReference()
.child(“Pro_”);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
mName.clear();
for(DataSnapshot snp : snapshot.getChildren()){
Name_Struct names = snp.getValue(Name_Struct.class);
for (DataSnapshot recipeSnapshot: snp.child(“basket”).getChildren()) {
mName.add(names);
}
}
mName_adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
RC_1 为; //Myadapter_1
@Override public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") int position) {
final Name_Struct names = mName.get(position);
holder.name_.setText(names.getName()));
holder.relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, RC_2.class);
???
mContext.startActivity(intent);
}
}
正如我在您的屏幕截图中看到的,“Pro_”节点包含一个值为“Mike”的名称。这意味着您可以将该节点映射到 Name_Struct
类型的对象中。你正在成功地做到这一点。在同一个节点下,还有另一个名为“篮子”的节点。该节点由 Map 对象表示,其中键由这些 ID(ID_1、ID_2 等)表示,值由 Detail_Struct
对象表示。为了能够在“篮子”节点下映射数据,您必须在您的 Name_Struct
class 中添加一个新的 属性 称为 basket
,如下所示:
public class Name_Struct implements Serializable {
private String name;
private Map<String, Object> basket;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@PropertyName("Basket")
public Map<String, Object> getBasket() {
return basket;
}
public void setBasket(Map<String, Object> basket) {
this.basket = basket;
}
}
现在要将数据传递给第二个 activity,您必须添加迭代 Map 并创建一个可以添加到 Intent 中的 List<Detail_Struct>
,以便可以在第二个 activity.