首页 > 解决方案 > 列表视图未显示我来自 FIREBASE 的项目

问题描述

集合“list_of_groups”的内容已更新,但从未查询过,这是我在代码中发现的唯一问题。

   private View groupFragmentView;
    private ListView list_View;
    private ArrayAdapter<String> arrayAdapter;
    private ArrayList<String> list_of_groups = new ArrayList<>();
    private DatabaseReference GroupRef;

这部分代码没有问题...

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

        GroupRef = FirebaseDatabase.getInstance().getReference().child("Groups");

        InitializeFields(groupFragmentView);

        RetriveAndDisplayGroups();


        return groupFragmentView;
    }

    private void RetriveAndDisplayGroups()
    {
        GroupRef.addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot)
            {
                Set<String> set = new HashSet<>();
                Iterator iterator = snapshot.getChildren().iterator();

                while (iterator.hasNext())
                {
                    set.add(((DataSnapshot)iterator.next()).getKey());
                }

                list_of_groups.clear();
                list_of_groups.addAll(set);
                arrayAdapter.notifyDataSetChanged();
            }

          
    }

    private void InitializeFields(View view)
    {
        list_View = (ListView) view.findViewById(R.id.list_View);
        arrayAdapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1);
        list_View.setAdapter(arrayAdapter);

    }`

这是我的代码,它没有显示存储在我的 firebase REALTIME DATABASE 中的组名称,代码没有错误,并且数据也存储在数据库中。

我尝试清理和构建我的项目,但它不起作用。

这是我的 xml 文件。

`

<ListView
        android:id="@+id/list_View"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />`

标签: androidlistviewfirebase-realtime-database

解决方案


在您的onDataChange方法中,您永远不会使用来自list_groups. 你应该在打电话之前打电话给addAllArrayAdpaternotifyDataSetChanged()

就像是:

arrayAdapter.addAll(list_groups);
arrayAdapter.notifyDataSetChanged()

推荐阅读