繁体   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