【问题标题】:i cant get the firebase display each data on each cardview of my android app but it shows same data on every cardview我无法让firebase在我的android应用程序的每个cardview上显示每个数据,但它在每个cardview上显示相同的数据
【发布时间】:2018-05-03 04:43:44
【问题描述】:

this is my firebase data structure

这是我所做的代码,但它只一次又一次地显示来自 firebase 数据库的相同数据。在卡片视图上,最后一个键值对从数据中显示出来。

这是主要问题

 myRef.addValueEventListener(new ValueEventListener() {
       @Override
       public void onDataChange(DataSnapshot dataSnapshot) {
                Textobj textobj = null;
           for (DataSnapshot data : dataSnapshot.getChildren()) {
               textobj = new Textobj(data.getKey().toString(),  data.getValue().toString());
               arrayList.add(position,textobj);
           }
           textView.setText(arrayList.get(position).getMtext().toString());
      textView1.setText(arrayList.get(position).getMtext2().toString());
           }


 @Override
 public void onCancelled(DatabaseError databaseError) {
 Log.w((String) TAG, "Failed to read                                                                                       value.",databaseError.toException());
     }
   });
   }
 @Override
 public int getItemCount() {
  int size = value2.length;
    return size;
      }
       }

【问题讨论】:

  • 请添加您的数据库结构并指明您想要获取的确切数据。
  • 我已经添加了上面的链接
  • 我已经添加了上面的数据结构链接

标签: java android database firebase-realtime-database


【解决方案1】:

问题解决了,我将我得到的值添加到我的 Textobj 类中,并将其添加到 arraylist 中并做对了 代码如下

 ValueEventListener valueEventListener = new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
          for (DataSnapshot data : dataSnapshot.getChildren()) {
              String key = data.getKey();
               String value = data.getValue(String.class);
              Textobj textobj = new Textobj(key,value);
              arrayList1.add(textobj);
              textView.setText(arrayList1.get(position).getMtext());
              textView1.setText(arrayList1.get(position).getMtext2());

          }
      }
      @Override
      public void onCancelled(DatabaseError databaseError) {
          Log.w((String) TAG, "Failed to read value.", databaseError.toException());
      }
  };
   myRef.addListenerForSingleValueEvent(valueEventListener);


} 

【讨论】:

  • 现在我可以从我的数据库中获取每个卡片视图上的每个值
【解决方案2】:

要获取数据,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference foodRef = rootRef.child("food");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            String value = ds.getValue(String.class);
            Log.d("TAG", key + " / "  + value);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
foodRef.addListenerForSingleValueEvent(eventListener);

您的输出将是:

Ktm / American made super bike...
Pulse / this is the indian made...
Yamaha / japan made super bike...

【讨论】:

  • 现在它只显示每张cardview yamaha上的最后一个键和值以及每张卡上的值
  • 你的 logcat 中的输出是什么?
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多