【发布时间】: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);
}
}
【问题讨论】:
标签: android firebase android-layout kotlin android-viewpager