我们如何在android中使用firebase Realtime数据库动态设置选项卡布局的选项卡标题?

Posted

技术标签:

【中文标题】我们如何在android中使用firebase Realtime数据库动态设置选项卡布局的选项卡标题?【英文标题】:How can we set tabs title of Tab Layout dynamically using firebase Realtime database in android? 【发布时间】:2021-07-25 01:41:09 【问题描述】:

基本上,我想使用 android 中的选项卡布局将 firebase 数据库中的子类别名称设置为 TAB 的标题。我已将 firebase 数据存储在 ArrayList 中,并在通过调试检查时将数据存储在其中。

这里的问题是我从存储的 ArrayList 中获取子类别名称并将其设置为 TAB 的标题,但它显示为 null 而不是名称。

这是我设置子类别标题的代码:

private fun setSubCategories() 
        mFirebaseInstance = FirebaseDatabase.getInstance()
        mDatabase = mFirebaseInstance!!.reference
        mSubCatArrayList = ArrayList()

        val ref = FirebaseDatabase.getInstance()
        ref.getReference("StoreSubCategory")
                .addValueEventListener(object : ValueEventListener 
                    override fun onDataChange(snapshot: DataSnapshot) 
                        try 
                            mSubCatArrayList!!.clear()
                            for (dataSnapshot1 in snapshot.children) 
                                key = dataSnapshot1.key.toString()
                                Log.e("TAG", "onDataChange: $key")
                                subCategoryEntity = dataSnapshot1.getValue(AddSubCategoryEntity::class.java)!!
                                mSubCatArrayList!!.add(subCategoryEntity!!)
                            

//setting tab titles
                            val viewPagerAdapter = ViewPagerAdapter(fragmentManager)
                            for (i in 1..3) 
                                viewPagerAdapter.addTabs(PersonalCareFragment(), "" + subCategoryEntity?.subCategoryName)
                            
                            tabLayoutSubCategory.tabGravity
                            subCategoryViewPager!!.adapter = viewPagerAdapter
                            viewPagerAdapter.notifyDataSetChanged()
                            tabLayoutSubCategory!!.setupWithViewPager(subCategoryViewPager)

                         finally 
                        
                    

                    override fun onCancelled(error: DatabaseError) 
                        Log.w(ContentValues.TAG, "loadPost:onCancelled", error.toException())
                    
                )

    

ViewPager 适配器的代码如下:

public class ViewPagerAdapter extends FragmentStatePagerAdapter 

    ArrayList<Fragment> fragmentArrayList = new ArrayList<>();
    ArrayList<String> stringArrayList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fm) 
        super(fm);
    

    @Override
    public Fragment getItem(int position) 
        return fragmentArrayList.get(position);
    
    @Override
    public int getItemPosition(Object object)
        return PagerAdapter.POSITION_NONE;
    
    @Nullable
    @Override
    public CharSequence getPageTitle(int position) 
        return stringArrayList.get(position);
    

    @Override
    public int getCount() 
        return fragmentArrayList.size();
    

    public void addTabs(Fragment fragment, String title) 
        stringArrayList.add(title);
        fragmentArrayList.add(fragment);

    

这是我的 firebase 数据库的结构:

【问题讨论】:

【参考方案1】:
    mSubCatArrayList = ArrayList()
        val ref = FirebaseDatabase.getInstance()
        ref.getReference("StoreSubCategory").child(addCategoryEntity?.categoryID!!)
                .addListenerForSingleValueEvent(object : ValueEventListener 
                    override fun onDataChange(snapshot: DataSnapshot) 
                        try 
                            val viewPagerAdapter = ViewPagerAdapter(fragmentManager)
                            mSubCatArrayList?.clear()
                            for (dataSnapshot1 in snapshot.children) 
                                var key = dataSnapshot1.key
                                Log.e("TAG", "onDataChange: $key")
                                subCategoryEntity = dataSnapshot1.getValue(AddSubCategoryEntity::class.java)!!
                                mSubCatArrayList?.add(subCategoryEntity!!)
                                viewPagerAdapter.addTabs(PersonalCareFragment(), ""+subCategoryEntity?.subCategoryName )

                            
                            tabLayoutSubCategory.tabGravity
                            subCategoryViewPager!!.adapter = viewPagerAdapter
                            viewPagerAdapter.notifyDataSetChanged()
                            tabLayoutSubCategory!!.setupWithViewPager(subCategoryViewPager)
 
                         catch (e: Exception) 
                            Log.e("TAG", "onCancelled: $e")
                        
                    

                    override fun onCancelled(databaseError: DatabaseError) 
                        Log.e("TAG", "onCancelled: " + databaseError.toException().toString())
                    
                )```

【讨论】:

以上是关于我们如何在android中使用firebase Realtime数据库动态设置选项卡布局的选项卡标题?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 两个数据库(iOS、Android)

如何从 Firebase 检索用户数据 android

如何使用 Firebase 身份验证服务并在我们自己的数据库中拥有用户?

什么是 firebase 以及如何在 Android 中使用它? [关闭]

android firebase通知不起作用

如何在 Android 中使用 MVC 模式从 firebase 检索数据? [复制]