大家好,这是一个菜鸟问题,但我正在使用 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/