Android 当片段返回的数据为空时,如何在视图寻呼机中动态操作片段

Android 当片段返回的数据为空时,如何在视图寻呼机中动态操作片段,android,android-fragments,android-viewpager,mvp,Android,Android Fragments,Android Viewpager,Mvp,在我的活动中,我正在设置ViewPager,TabLayout,并在列表中添加两个片段实例。然后我将该列表传递给ViewPagerAdapter 我使用两个片段实例,因为api返回两个需要以选项卡方式显示的数据列表(一个列表在一个选项卡中,另一个列表在另一个选项卡中)。但当viewpager适配器返回片段时,若一个数据列表为空,那个么我在Tab-0中得到的是空屏幕 如何动态检测数据大小(这里比较混乱,因为需要调用片段)并基于此填充选项卡 ActivityOne.kt class Activity

在我的活动中,我正在设置
ViewPager
TabLayout
,并在列表中添加两个片段实例。然后我将该列表传递给
ViewPagerAdapter

我使用两个片段实例,因为api返回两个需要以选项卡方式显示的数据列表(一个列表在一个选项卡中,另一个列表在另一个选项卡中)。但当viewpager适配器返回片段时,若一个数据列表为空,那个么我在Tab-0中得到的是空屏幕

如何动态检测数据大小(这里比较混乱,因为需要调用片段)并基于此填充选项卡

ActivityOne.kt

class ActivityOne : BaseActivity() {

    lateinit var item: ArrayList<HistoryTabItem>
    lateinit var tabLayout: Tabs

    val InfoViewpagerAdapter:InfoVIewPagerAdapter by lazy { InfoVIewPagerAdapter(supportFragmentManager, ArrayList()) }

    fun newInstance(context: Context): Intent {
        return Intent(context, InfoFragment::class.java)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.info_tabview)
        getFragments()
        InfoViewpagerAdapter.arrayList = item

        tabLayout = findViewById(R.id.tabsnfo_type)
        val viewPager = findViewById<ViewPager>(R.id.view_pager_info_type)
        viewPager.adapter = InfoViewpagerAdapter
        tabLayout.setupWithViewPager(viewPager)

    }



    fun getFragments() {

        item = ArrayList()

        val HistoryTabItemSeller = HistoryTabItem()
        HistoryTabItemSeller.fragment = InfoFragment.createInstance()
        item.add(HistoryTabItemSeller)

      val HistoryTabItemBuyer = HistoryTabItem()
        HistoryTabItemBuyer.fragment = InfoFragment.createInstance()
        item.add(HistoryTabItemBuyer)

    }
}
class ActivityOne:BaseActivity(){
lateinit变量项:ArrayList
lateinit var tabLayout:选项卡
val InfoViewpagerAdapter:InfoViewpagerAdapter by lazy{InfoViewpagerAdapter(supportFragmentManager,ArrayList())}
有趣的新实例(上下文:上下文):意图{
返回意图(上下文,InfoFragment::class.java)
}
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.info\u选项卡视图)
getFragments()
InfoViewpagerAdapter.arrayList=项目
tabLayout=findviewbyd(R.id.tabsnfo_类型)
val viewPager=findViewById(R.id.view\U pager\U info\U类型)
viewPager.adapter=InfoViewpagerAdapter
tabLayout.setupWithViewPager(viewPager)
}
有趣的片段(){
item=ArrayList()
val HistoryTabItemSeller=HistoryTabItem()
HistoryTabItemSeller.fragment=InfoFragment.createInstance()
item.add(历史选项卡ItemSeller)
val HistoryTabItemBuyer=HistoryTabItem()
HistoryTabItemBuyer.fragment=InfoFragment.createInstance()
item.add(历史选项卡ItemBuyer)
}
}
信息视图页面雷达

class InfoVIewPagerAdapter(fm: FragmentManager, var arrayList: ArrayList<HistoryTabItem>) : FragmentPagerAdapter(fm) {

    override fun getItem(position: Int): Fragment {
        return arrayList[position].fragment
    }

    override fun getCount(): Int {
        return arrayList.size
    }
}
class-InfoVIewPagerAdapter(fm:FragmentManager,var-arrayList:arrayList):FragmentPagerAdapter(fm){
覆盖趣味getItem(位置:Int):片段{
返回arrayList[position].fragment
}
重写fun getCount():Int{
返回arrayList.size
}
}
碎片

class InfoFragment : BaseDaggerFragment(), InfoContract.View  {

    var isTickerShow: Boolean? = false
    var tickerMessage: String? = null
    lateinit var allTransactionList: ArrayList<Any>

    @Inject
    lateinit var infoPresenter: HoldInfoPresenter
    val infoAdapter: InfoAdapter by lazy { 
  InfoAdapter(ArrayList()) }
    lateinit var fakelist: ArrayList<Any>

    companion object {
        fun createInstance(): Fragment {
            return InfoFragment()
        }
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_container_info, container, false)
        return view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initView()
        infoPresenter.attachView(this)
        infoPresenter.getInfo()
    }

    fun initView() {
        rv_container.layoutManager = LinearLayoutManager(context)
        rv_container.adapter = infoAdapter
    }

    override fun renderInfo(depositHistory: DepositHistory?) {
        var resultList = ArrayList<Any>()
        depositHistory?.let {
            resultList = combinedTransactionList(it.sellerData as ArrayList<SellerDataItem>, it.buyerData as ArrayList<BuyerDataItem>)
            isTickerShow = it.tickerMessageIsshow
            tickerMessage = it.tickerMessageId
        }


        infoAdapter.list.clear()
        infoAdapter.list.addAll(resultList)
        infoAdapter.notifyDataSetChanged()
    }

    fun combinedTransactionList(arrayList: ArrayList<SellerDataItem>, arrayList1: ArrayList<BuyerDataItem>): ArrayList<Any> {
        allTransactionList = ArrayList()
        allTransactionList.clear()
        allTransactionList.addAll(arrayList)
        allTransactionList.addAll(arrayList1)

        return allTransactionList
    }
}
class-InfoFragment:BaseDaggerFragment(),InfoContract.View{
变量显示:布尔?=假
var tickerMessage:字符串?=null
lateinit var allTransactionList:ArrayList
@注入
lateinit var infoPresenter:HoldInfoPresenter
val infoAdapter:惰性{
InfoAdapter(ArrayList())}
lateinit var fakelist:ArrayList
伴星{
fun createInstance():片段{
返回InfoFragment()
}
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
val视图=充气机。充气(R.layout.fragment\u container\u info,container,false)
返回视图
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
initView()
infoPresenter.attachView(此)
infoPresenter.getInfo()
}
趣味initView(){
rv_container.layoutManager=LinearLayoutManager(上下文)
rv_container.adapter=信息适配器
}
覆盖fun renderInfo(存款历史记录:存款历史记录?){
var resultList=ArrayList()
历史?让我来{
resultList=combinedTransactionList(it.sellerData作为ArrayList,it.buyerData作为ArrayList)
isTickerShow=it.tickermessageshow
tickerMessage=it.tickerMessageId
}
infoAdapter.list.clear()
infoAdapter.list.addAll(结果列表)
infoAdapter.notifyDataSetChanged()
}
趣味组合交易列表(arrayList:arrayList,arrayList 1:arrayList):arrayList{
allTransactionList=ArrayList()
allTransactionList.clear()
allTransactionList.addAll(arrayList)
allTransactionList.addAll(arrayList1)
返回所有事务列表
}
}

最好的选择是获取活动中的数据,然后用两个选项卡或一个选项卡显示选项卡布局。您可以将其与共享视图模型一起使用,但我发现您在这里不使用视图模型。 当列表不为空时,也可以在片段中的
createInstance()
方法中设置列表。
第三个选项是获取片段中的数据,然后向活动发送列表为空的信息,并隐藏特定选项卡。

请添加您的code@mac229在“如何使用创建实例方法检查活动中的列表大小”中添加了代码“检查2”和“检查3”?代码“如何连接”您应该在活动中获取数据,然后检查列表是否为空,然后创建视图寻呼机适配器。