1

FragmentPagerAdapter에 대해 ViewPager를 설정하기 위해 다음 코드를 작성했습니다.FragmentPagerAdapter의 프래그먼트를 업데이트 할 수 없습니다.

class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { 

    private val mFragmentList = ArrayList<Fragment>() 
    private val mFragmentTitleList = ArrayList<String>() 

    override fun getItem(position: Int): Fragment = mFragmentList[position] 

    override fun getCount(): Int = mFragmentList.size 

    fun addFragment(fragment: Fragment, title: String) { 
     mFragmentList.add(fragment) 
     mFragmentTitleList.add(title) 
    } 

    fun addFragment(fragment: Fragment) { 
     mFragmentList.add(fragment) 
    } 

    override fun getPageTitle(position: Int): CharSequence = mFragmentTitleList[position] 

} 

그리고 활동의, 내가보기 호출기를 설정하기 위해 다음과 같은 방법이있다. 내가 다시 위의 메서드를 호출하고 있지만 이미 인스턴스화 한 내보기는 업데이트되지 않습니다 다시 어댑터를 변경에

private fun setupViewPager(viewPager: ViewPager, dataList: List<CholesterolMonthlySummary>) { 
    Log.i(TAG, "Size of the dataList passing through setupViewPager is ${dataList.size}") 

    val adapter = ViewPagerAdapter(supportFragmentManager) 
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), CHOL)) 
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), LDL)) 
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), HDL)) 
    adapter.addFragment(CholesterolPagingFragment.newInstance(ArrayList(dataList), TRIG)) 
    viewPager.adapter = adapter 

} 

이 때 새로운 데이터 세트가 제공됩니다. 인스턴스화되지 않은 뷰만 업데이트됩니다.

나는 심지어 notifyDataSetChange() 어댑터에 다음 코드를 추가하려고했지만 또한 작동하지 않습니다.

override fun getItemPosition(`object`: Any?): Int = FragmentPagerAdapter.POSITION_NONE 
+0

새 데이터를 수신하면 콜백을 통해 단편으로 목록을 업데이트 할 수 있습니다. – Raghunandan

답변

0

보기를 업데이트 할 때 adapter.notifyDataSetChanged()에 직접 전화를 걸 수 있습니다.

새 데이터를 삽입하기 전에 mFragmentListmFragmentTitleList을 삭제해야 할 수도 있습니다.

관련 문제