我们如何在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 身份验证服务并在我们自己的数据库中拥有用户?