Recyclerview setzt die Position nach ungültigem PagingSource zurückAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Recyclerview setzt die Position nach ungültigem PagingSource zurück

Post by Anonymous »

Es gibt ein Wohnmobil, auf dem Daten über einen Paging -Adapter Seite auf Seite geladen werden. Nach dem Drücken der Aktualisierungstaste möchten ich die sichtbaren Elemente durch Laden der erforderlichen Seiten von der API aktualisieren. Aus irgendeinem Grund geht an einigen Stellen die Position im Wohnmobil verloren. Dies ist beispielsweise zu sehen, wenn Sie auf Element 2,10: 50: CRS-13 stehen und auf Aktualisieren < /p>
MainActivity < /p>
drücken

Code: Select all

class MainActivity : AppCompatActivity() {

private val viewModel: MainViewModel by viewModels()

private val launchesPagingAdapter: LaunchesPagingAdapter by lazy {
LaunchesPagingAdapter()
}

private lateinit var recyclerView: RecyclerView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
recyclerView = findViewById(R.id.rv_items).apply {
adapter = launchesPagingAdapter
}

findViewById(R.id.btn_refresh).apply {
setOnClickListener {
viewModel.refresh()
}
}

lifecycleScope.launch {
viewModel.launchesPagingData.collect { pagingData ->
launchesPagingAdapter.submitData(pagingData)
}
}
}

}
< /code>
ViewModel < /p>
class MainViewModel : ViewModel() {

private var launchesPagingSource: LaunchesPagingSource? = null
get() {
if (field == null || field?.invalid == true) {
field = LaunchesPagingSource()
}
return field
}

val launchesPagingData = Pager(
PagingConfig(pageSize = 20, initialLoadSize = 20, prefetchDistance = 10)
) {
launchesPagingSource!!
}.flow
.cachedIn(viewModelScope)

fun refresh() {
launchesPagingSource?.invalidate()
}

}
Wie kann ich die Daten der erforderlichen Seiten aktualisieren?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post