为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 在每个循环后给出空值

Firebase 在每个循环后给出空值

皈依舞 2021-09-12 16:25:55
我有一个类Home,其中使用一种方法从 Firebase 提取数据getDatafromFirebase(),当我在循环中记录值时,它会显示该值,但是当我将其添加到列表中并更新适配器时,会RecyclerView显示null所有值。public class Home extends Fragment {    public Home() {}    RecyclerView recyclerView;    RecyclerView.LayoutManager layoutManager;    private DatabaseReference reference = FirebaseDatabase.getInstance ().getReference ();    ArrayList<FirebaseVideoDetials> list;    FirebaseVideoDetials details;    RecyclerViewAdapter adapter;    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        View view  =inflater.inflate(R.layout.fragment_home, container, false);        RelativeLayout without = view.findViewById(R.id.withoutInternet);        RelativeLayout mainLayout = view.findViewById(R.id.mainLayout);        recyclerView = view.findViewById(R.id.recyclerView);        layoutManager = new LinearLayoutManager(getActivity());        recyclerView.setLayoutManager(layoutManager);        recyclerView.setItemAnimator(new DefaultItemAnimator());        recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),LinearLayoutManager.HORIZONTAL));        details = new FirebaseVideoDetials();        list = new ArrayList<FirebaseVideoDetials>();        getDatafromFirebase();        adapter = new RecyclerViewAdapter(getActivity(), list);        recyclerView.setAdapter(adapter);        if(!Internetcheck.checkConnection(getActivity())){            without.setVisibility(View.VISIBLE);            mainLayout.setVisibility(View.INVISIBLE);        }else{            without.setVisibility(View.INVISIBLE);            mainLayout.setVisibility(View.VISIBLE);        }        return view;    }
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

在调用 adapter.notifyDataSetChanged 之前必须先初始化适配器


adapter = new RecyclerViewAdapter(getActivity(), list);

getDatafromFirebase();


查看完整回答
反对 回复 2021-09-12
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

我通过在单独的函数中调用Listview的add函数解决了这个问题:


public void getDatafromFirebase(){

        reference.addValueEventListener(new ValueEventListener() {

            @Override

            public void onDataChange(DataSnapshot dataSnapshot) {

                list.clear();

                DataSnapshot Videoreference = dataSnapshot.child("Videos");

                for (DataSnapshot videoschild : Videoreference.getChildren()){

                    DataSnapshot description = videoschild.child("Description");

                    DataSnapshot duration = videoschild.child("Duration");

                    DataSnapshot title = videoschild.child("Title");

                    DataSnapshot thumbnail = videoschild.child("Thumbnail");

                    DataSnapshot date = videoschild.child("Date");

                    DataSnapshot time = videoschild.child("Time");

                    updatelist(description.getValue(String.class),

                            title.getValue(String.class),

                            String.valueOf(duration.getValue()),

                            thumbnail.getValue(String.class),

                            String.valueOf(date.getValue()),

                            String.valueOf(time.getValue()));

                }

                adapter.notifyDataSetChanged();

                progressbar.setVisibility(View.GONE);


            }


            @Override

            public void onCancelled(DatabaseError databaseError) {

                Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();

            }

        });

    }


    public void updatelist(String desc,String title,String duration,String thumbnail,String Date,String time){

        FirebaseVideoDetials details = new FirebaseVideoDetials();

        details.setDescription(desc);

        details.setDuration(duration);

        details.setTitle(title);

        details.setThumbnail(thumbnail);

        details.setTime(time);

        details.setDate(Date);

        list.add(details);

    }



查看完整回答
反对 回复 2021-09-12
  • 3 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信