[英]I want to get data from firebase to inside fragment with recycler view
我正在為自己做一個項目。 我在某個時候被卡住了。
我想通過回收者視圖將數據從Firebase獲取到內部片段。
我真的需要你的幫助。
我嘗試了幾種方法。 但是我做不到。 我創建了recyclerviewconfig和firebasehelper類,但是沒有用。 今天,我嘗試了firebaseUI。 但再次沒有用。
public class Kumas extends Fragment {
private View KumasFragmet;
private RecyclerView KumasListesi;
private DatabaseReference MaliyetKumasListesiReference;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
KumasFragmet= inflater.inflate(R.layout.fragment_kumas, container, false);
MaliyetKumasListesiReference = FirebaseDatabase.getInstance().getReference().child("test carisi").child("modeller").child("1").child("maliyet").child("kumas");
KumasListesi = (RecyclerView) KumasFragmet.findViewById(R.id.maliyet_kumaş_rw);
KumasListesi.setLayoutManager(new LinearLayoutManager(getContext()));
FloatingActionButton flt = (FloatingActionButton) KumasFragmet.findViewById(R.id.kumas_ekle_floating);
flt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent in = new Intent(getActivity(),KumasEkle.class);
startActivity(in);
}
});
return KumasFragmet;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerOptions<KumasTanim> options = new FirebaseRecyclerOptions.Builder<KumasTanim>()
.setQuery(MaliyetKumasListesiReference,KumasTanim.class)
.build();
FirebaseRecyclerAdapter<KumasTanim,MaliyetKumasListesiViewHolder> adapter =
new FirebaseRecyclerAdapter<KumasTanim, MaliyetKumasListesiViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final MaliyetKumasListesiViewHolder maliyetKumasListesiViewHolder, int i, @NonNull KumasTanim kumasTanim) {
maliyetKumasListesiViewHolder.kumas_adi.setText(kumasTanim.getKumas_adi());
maliyetKumasListesiViewHolder.sarfiyat.setText(kumasTanim.getSarfiyat());
maliyetKumasListesiViewHolder.fiyat.setText(kumasTanim.getFiyat());
}
@NonNull
@Override
public MaliyetKumasListesiViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.maliyet_kumas_item,parent,false);
MaliyetKumasListesiViewHolder maliyetKumasListesiViewHolder = new MaliyetKumasListesiViewHolder(view);
return maliyetKumasListesiViewHolder;
}
};
KumasListesi.setAdapter(adapter);
adapter.startListening();
}
public static class MaliyetKumasListesiViewHolder extends RecyclerView.ViewHolder {
TextView kumas_adi,sarfiyat,fiyat;
public MaliyetKumasListesiViewHolder(@NonNull View itemView) {
super(itemView);
kumas_adi = itemView.findViewById(R.id.item_kumas_adi_tw);
sarfiyat = itemView.findViewById(R.id.item_sarfiyat_tw);
fiyat = itemView.findViewById(R.id.item_fiyat_tw);
}
}
}
它不會給出任何錯誤。
請添加事件偵聽器,如果沒有獲取數據,則可能會出現數據庫錯誤,請先檢查該錯誤。
MaliyetKumasListesiReference .addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Post post = dataSnapshot.getValue(Post.class);
System.out.println(post);
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
您需要添加eventlistener
來檢索數據。 因此,請嘗試以下方法,並希望它會起作用。
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerOptions<KumasTanim> options = new FirebaseRecyclerOptions.Builder<KumasTanim>()
.setQuery(MaliyetKumasListesiReference,KumasTanim.class)
.build();
FirebaseRecyclerAdapter<KumasTanim,MaliyetKumasListesiViewHolder> adapter =
new FirebaseRecyclerAdapter<KumasTanim, MaliyetKumasListesiViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final MaliyetKumasListesiViewHolder maliyetKumasListesiViewHolder, int i, @NonNull KumasTanim kumasTanim) {
MaliyetKumasListesiReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount()!=0){
maliyetKumasListesiViewHolder.kumas_adi.setText(kumasTanim.getKumas_adi());
maliyetKumasListesiViewHolder.sarfiyat.setText(kumasTanim.getSarfiyat());
maliyetKumasListesiViewHolder.fiyat.setText(kumasTanim.getFiyat());
}else {
//if empty do something
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@NonNull
@Override
public MaliyetKumasListesiViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.maliyet_kumas_item,parent,false);
MaliyetKumasListesiViewHolder maliyetKumasListesiViewHolder = new MaliyetKumasListesiViewHolder(view);
return maliyetKumasListesiViewHolder;
}
};
KumasListesi.setAdapter(adapter);
adapter.startListening();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.