pull/94/head
kunfei 5 years ago
parent 675aa0cb88
commit d8c518281b
  1. 22
      app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt

@ -7,6 +7,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.BaseFragment
@ -15,7 +16,6 @@ import io.legado.app.constant.EventBus
import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.Book
import io.legado.app.help.IntentDataHelp
import io.legado.app.help.ToTopListUpCallback
import io.legado.app.lib.theme.ATH
import io.legado.app.lib.theme.accentColor
import io.legado.app.ui.audio.AudioPlayActivity
@ -78,6 +78,21 @@ class BooksFragment : BaseFragment(R.layout.fragment_books),
booksAdapter = BooksAdapterGrid(requireContext(),this)
}
rv_bookshelf.adapter = booksAdapter
booksAdapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
super.onItemRangeInserted(positionStart, itemCount)
if (positionStart == 0) {
rv_bookshelf.scrollToPosition(0)
}
}
override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) {
super.onItemRangeMoved(fromPosition, toPosition, itemCount)
if (toPosition == 0) {
rv_bookshelf.scrollToPosition(0)
}
}
})
}
private fun upRecyclerData() {
@ -89,8 +104,6 @@ class BooksFragment : BaseFragment(R.layout.fragment_books),
else -> App.db.bookDao().observeByGroup(groupId)
}
bookshelfLiveData?.observe(this, Observer {
val listUpCallback = ToTopListUpCallback()
listUpCallback.adapter = booksAdapter
val diffResult =
DiffUtil.calculateDiff(
BooksDiffCallBack(
@ -99,8 +112,7 @@ class BooksFragment : BaseFragment(R.layout.fragment_books),
)
)
booksAdapter.setItems(it, false)
diffResult.dispatchUpdatesTo(listUpCallback)
rv_bookshelf.scrollToPosition(listUpCallback.firstInsert)
diffResult.dispatchUpdatesTo(booksAdapter)
})
}

Loading…
Cancel
Save