【问题标题】:How can we set tabs title of Tab Layout dynamically using firebase Realtime database in android?我们如何在android中使用firebase Realtime数据库动态设置选项卡布局的选项卡标题?
【发布时间】: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 数据库的结构:

【问题讨论】:

    标签: android firebase android-layout kotlin android-viewpager


    【解决方案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())
                        }
                    })```
    

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 2023-03-09
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多