簡體   English   中英

我想使用回收者視圖將數據從Firebase獲取到內部片段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM