gpt4 book ai didi

java - 如何迭代 Firebase 数据库中的节点?

转载 作者:行者123 更新时间:2023-12-01 20:01:57 25 4
gpt4 key购买 nike

我在 Firebase 中有一个简单的数据库,如下所示: enter image description here

以下代码当前读取资源填充并将读取的每个项目渲染到 RecyclerView。

public class kos_putra extends Fragment {

ArrayList<Kost> mList = new ArrayList<>();
KostAdapter mAdapter;
DatabaseReference mFirebaseDatabase;
FirebaseDatabase mFirebaseInstance;

public kos_putra() {
// Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.kos_putra, container, false);

RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
mAdapter = new KostAdapter(mList);
recyclerView.setAdapter(mAdapter);

fillData();
return view;
}


private void fillData() {
Resources resources = getResources();
String[] arJudul = resources.getStringArray(R.array.places);
String[] arDeskripsi = resources.getStringArray(R.array.place_desc);
String[] arLokasi = resources.getStringArray(R.array.place_locations);
TypedArray a = resources.obtainTypedArray(R.array.places_picture);
Drawable[] arFoto = new Drawable[a.length()];
for (int i = 0; i < arFoto.length; i++) {
BitmapDrawable bd = (BitmapDrawable) a.getDrawable(i);
RoundedBitmapDrawable rbd =
RoundedBitmapDrawableFactory.create(getResources(), bd.getBitmap());
rbd.setCircular(true);
arFoto[i] = rbd;
}
a.recycle();

for (int i = 0; i < arJudul.length; i++) {
mList.add(new Kost(arJudul[i], arDeskripsi[i], arLokasi[i], arFoto[i]));
}
mAdapter.notifyDataSetChanged();
}

private void fetchDataFromFirebase(){
mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getReference("kos_putra");
}
}

现在我不想从文件中读取,而是想从 F​​irebase 中读取。如何迭代 kos_putra 下的每个节点?下图中,有4个物体。从逻辑上讲,我正在考虑先获取数据计数,然后执行 for 循环。但仍然不清楚如何做到这一点。

最佳答案

要在每个节点中进行迭代,请执行以下操作:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("kos_putra");
ref.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot data: dataSnapshot.getChildren()){
String deskripsi=data.child("deskripsi").getValue().toString();
String nama=data.child("nama").getValue().toString();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {

}
});

您的数据快照位于 kos_putra ,在该位置添加一个监听器将在所有节点(1,2,3,4)上进行迭代,并且使用 for 循环它将获取所有节点内的值。

关于java - 如何迭代 Firebase 数据库中的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com