java - 使用 getkey 从 firebase 数据库获取数据

标签 java android firebase firebase-realtime-database

大家好,这是一个菜鸟问题,但我正在使用 firebase 数据库,并且我正在使用 getkey 用键填充我的 ListView 。这些键代表我的应用程序中的作业。

 dbref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    keyList.add(ds.getKey());

                    final String[] REGISTRATION_KEY = keyList.toArray(new String[keyList.size()]);


                   currentjobAdapter apkData = new currentjobAdapter(Current_Jobs.this, REGISTRATION_KEY);
                  lv.setAdapter(apkData);
                    apkData.notifyDataSetChanged();


                }
            }
        }

这一切都很好,非常感谢你们的帮助。我的下一个问题是我还需要从 REGISTRATION_KEY 获取信息,然后使用它来访问该 child 。

我的数据库如下

GH67FGH{
  GH67FGH{ 
   Important_Job true:
   Date 15 04 2018:

} } 我想要做的不仅是用 key 填充 ListView (在本例中为 GH67FGH),而且我还想添加来自 important_job 和日期的信息。

我知道我已经有了这里的 key keyList.add(ds.getKey());

如何将列表中每个项目的键列表转换为字符串,然后使用它来访问 child().getValue()

最佳答案

所以我想我可能有答案,您可以通过设置在填充 View 时触发的值事件监听器来从基本适配器访问它。尝试这样的事情

public class currentjobAdapter extends BaseAdapter {
String[] Reg;
Context C;
public currentjobAdapter() {
    Reg = null;
}

public currentjobAdapter(Context c, String[] reg){
 this.C = c;
    Reg = reg;
}
@Override
public int getCount() {
    return Reg.length;
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(final int i, View convertView, ViewGroup viewGroup) {
    final View row;


    if (convertView == null) {

        row = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.YourCustomList, viewGroup, false);

    } else {
        row = convertView;
    }


   TextView tv1 =  row.findViewById(R.id.yourid);
    tv1.setText(Reg[i]);
    final String[] date = new String[1];
    String registration = Reg[i];
    FirebaseDatabase db = FirebaseDatabase.getInstance();
    DatabaseReference dbref = db.getReference().child(registration).child(registration);
    dbref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            date[0] = dataSnapshot.child("date").getValue(String.class);

            TextView tv2 = (TextView) row.findViewById(R.id.yourid2);
            tv2.setText(date[0]);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
    return row;
}

}

关于java - 使用 getkey 从 firebase 数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49846025/

相关文章:

java - 在 hibernate 中的另一个实体中两次使用相同的实体

android - 如何控制硬件后退按钮

android - 如何在android上实现类似 "Printer Discover"的服务发现?

android - NDK 构建与 Android Studio NDK 构建

Java二分查找计数比较次数

java - spring不使用RequestMappingHandlerMapping来映射请求

java - 部署 Spring MVC 应用程序以在 Tomcat8 中以根目录运行

ios - 使用swift访问firebase中特定键的值

firebase - 等待直到收到用户对象

javascript - 用于 createUserWithEmailAndPassword 的 Firebase 和验证码