|
|
@ -5,11 +5,14 @@ import android.os.Bundle |
|
|
|
import android.view.Menu |
|
|
|
import android.view.Menu |
|
|
|
import android.view.MenuItem |
|
|
|
import android.view.MenuItem |
|
|
|
import android.view.View |
|
|
|
import android.view.View |
|
|
|
import android.view.ViewGroup |
|
|
|
|
|
|
|
import androidx.appcompat.widget.SearchView |
|
|
|
import androidx.appcompat.widget.SearchView |
|
|
|
import androidx.fragment.app.* |
|
|
|
import androidx.fragment.app.Fragment |
|
|
|
|
|
|
|
import androidx.fragment.app.activityViewModels |
|
|
|
|
|
|
|
import androidx.fragment.app.viewModels |
|
|
|
import androidx.lifecycle.LiveData |
|
|
|
import androidx.lifecycle.LiveData |
|
|
|
|
|
|
|
import androidx.viewpager2.adapter.FragmentStateAdapter |
|
|
|
import com.google.android.material.tabs.TabLayout |
|
|
|
import com.google.android.material.tabs.TabLayout |
|
|
|
|
|
|
|
import com.google.android.material.tabs.TabLayoutMediator |
|
|
|
import io.legado.app.R |
|
|
|
import io.legado.app.R |
|
|
|
import io.legado.app.base.VMBaseFragment |
|
|
|
import io.legado.app.base.VMBaseFragment |
|
|
|
import io.legado.app.constant.AppConst |
|
|
|
import io.legado.app.constant.AppConst |
|
|
@ -44,7 +47,7 @@ class BookshelfFragment : VMBaseFragment<BookshelfViewModel>(R.layout.fragment_b |
|
|
|
private val binding by viewBinding(FragmentBookshelfBinding::bind) |
|
|
|
private val binding by viewBinding(FragmentBookshelfBinding::bind) |
|
|
|
override val viewModel: BookshelfViewModel by viewModels() |
|
|
|
override val viewModel: BookshelfViewModel by viewModels() |
|
|
|
private val activityViewModel: MainViewModel by activityViewModels() |
|
|
|
private val activityViewModel: MainViewModel by activityViewModels() |
|
|
|
private lateinit var adapter: FragmentStatePagerAdapter |
|
|
|
private lateinit var adapter: FragmentStateAdapter |
|
|
|
private lateinit var tabLayout: TabLayout |
|
|
|
private lateinit var tabLayout: TabLayout |
|
|
|
private var bookGroupLiveData: LiveData<List<BookGroup>>? = null |
|
|
|
private var bookGroupLiveData: LiveData<List<BookGroup>>? = null |
|
|
|
private val bookGroups = mutableListOf<BookGroup>() |
|
|
|
private val bookGroups = mutableListOf<BookGroup>() |
|
|
@ -107,10 +110,12 @@ class BookshelfFragment : VMBaseFragment<BookshelfViewModel>(R.layout.fragment_b |
|
|
|
tabLayout.isTabIndicatorFullWidth = false |
|
|
|
tabLayout.isTabIndicatorFullWidth = false |
|
|
|
tabLayout.tabMode = TabLayout.MODE_SCROLLABLE |
|
|
|
tabLayout.tabMode = TabLayout.MODE_SCROLLABLE |
|
|
|
tabLayout.setSelectedTabIndicatorColor(requireContext().accentColor) |
|
|
|
tabLayout.setSelectedTabIndicatorColor(requireContext().accentColor) |
|
|
|
tabLayout.setupWithViewPager(binding.viewPagerBookshelf) |
|
|
|
|
|
|
|
binding.viewPagerBookshelf.offscreenPageLimit = 1 |
|
|
|
binding.viewPagerBookshelf.offscreenPageLimit = 1 |
|
|
|
adapter = TabFragmentPageAdapter(childFragmentManager) |
|
|
|
adapter = TabFragmentPageAdapter() |
|
|
|
binding.viewPagerBookshelf.adapter = adapter |
|
|
|
binding.viewPagerBookshelf.adapter = adapter |
|
|
|
|
|
|
|
TabLayoutMediator(tabLayout, binding.viewPagerBookshelf) { tab, i -> |
|
|
|
|
|
|
|
tab.text = bookGroups[i].groupName |
|
|
|
|
|
|
|
}.attach() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun initBookGroupData() { |
|
|
|
private fun initBookGroupData() { |
|
|
@ -240,29 +245,21 @@ class BookshelfFragment : VMBaseFragment<BookshelfViewModel>(R.layout.fragment_b |
|
|
|
}.show() |
|
|
|
}.show() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private inner class TabFragmentPageAdapter(fm: FragmentManager) : |
|
|
|
private inner class TabFragmentPageAdapter : |
|
|
|
FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { |
|
|
|
FragmentStateAdapter(this) { |
|
|
|
|
|
|
|
|
|
|
|
override fun getPageTitle(position: Int): CharSequence { |
|
|
|
override fun getItemId(position: Int): Long { |
|
|
|
return bookGroups[position].groupName |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun getItemPosition(`object`: Any): Int { |
|
|
|
|
|
|
|
return POSITION_NONE |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun getItem(position: Int): Fragment { |
|
|
|
|
|
|
|
val group = bookGroups[position] |
|
|
|
val group = bookGroups[position] |
|
|
|
return BooksFragment.newInstance(position, group.groupId) |
|
|
|
return group.groupId |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun getCount(): Int { |
|
|
|
override fun getItemCount(): Int { |
|
|
|
return bookGroups.size |
|
|
|
return bookGroups.size |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun instantiateItem(container: ViewGroup, position: Int): Any { |
|
|
|
override fun createFragment(position: Int): Fragment { |
|
|
|
val fragment = super.instantiateItem(container, position) as BooksFragment |
|
|
|
|
|
|
|
val group = bookGroups[position] |
|
|
|
val group = bookGroups[position] |
|
|
|
|
|
|
|
val fragment = BooksFragment.newInstance(position, group.groupId) |
|
|
|
fragmentMap[group.groupId] = fragment |
|
|
|
fragmentMap[group.groupId] = fragment |
|
|
|
return fragment |
|
|
|
return fragment |
|
|
|
} |
|
|
|
} |
|
|
|