繁体   English   中英

使用getkey从Firebase数据库获取数据

[英]getting data from firebase database using getkey

嗨,大家好,这是一个菜鸟问题,但是我正在使用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中获取信息,然后使用它来访问该孩子。

我的数据库如下

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

我不仅要用键填充listview(在这种情况下将是GH67FGH),而且我还想从Important_job和Date中添加信息。

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

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

所以我想我可能有答案,您可以通过在填充视图时将值事件监听器设置为触发来从基本适配器访问它。 试试这个

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;
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM