小编Doi*_*nhe的帖子

如何隐藏某些片段中的底部导航栏?

我有一个带有 navGraph 的活动和一个带有 2 个菜单项的底部导航栏。我的问题是我的底部导航栏到处出现,detailFragment、aboutFragment、signInFragment等等。


        val navController = this.findNavController(R.id.myNavHostFragment)

        val appBarConfiguration = AppBarConfiguration.Builder(
            R.id.contactsFragment,
            R.id.profileFragment
        ).build()

        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration)

        val navView: BottomNavigationView = findViewById(R.id.nav_view)
        NavigationUI.setupWithNavController(navView, navController)


Run Code Online (Sandbox Code Playgroud)

我如何限制它只显示在我的菜单项上的 2 个片段上?

这就是我解决它的方法

    navController.addOnDestinationChangedListener{ _, nd: NavDestination, _->
        if(nd.id == R.id.contactsFragment || nd.id == R.id.profileFragment){
            navView.visibility = View.VISIBLE
        }else{
            navView.visibility = View.GONE
        }
Run Code Online (Sandbox Code Playgroud)

kotlin android-jetpack android-bottomappbar android-jetpack-navigation

8
推荐指数
1
解决办法
3518
查看次数

kotlin 中数据绑定的好处?

我想知道在开发 Android 应用程序时编写额外代码以在 Kotlin 中实现数据绑定的好处。因为 Kotlin 扩展已经允许我们直接访问视图,而无需 findViewById。

android kotlin kotlin-android-extensions android-databinding

7
推荐指数
1
解决办法
1026
查看次数

使用 PagingDataAdapter 时如何恢复 recyclerview 滚动位置?

我有一个应用程序,它从 API获取158 个项目的列表,将其存储在 Room 中,然后将其显示给用户。RoomDB 是事实的来源。

这是我的 ViewModel 上从数据库获取结果的代码:

private val pagingConfig =
    PagingConfig(pageSize = 20, enablePlaceholders = false, maxSize = 300)

fun getList(filters: Filters): Flow<PagingData<Character>> {
    return Pager(pagingConfig) {
        repository.getCharacters(filters)
    }.flow.map {
        it.asDomainModel()
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的片段上填充适配器的代码:

private fun fetchData(filters: Filters) {
    lifecycleScope.launch {
        charactersViewModel.getList(filters).collectLatest { pagedList ->
            characterAdapter.submitData(pagedList)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当前行为:

  • 当我的第 60 项之后发生配置更改时,滚动位置丢失,我发现将pagingConfig上的pageSize20增加到55,它解决了这个问题。

我已经尝试过的:

由于我获取数据异步我使用这段代码从这个尝试的文章,以防止在加载数据时适配器是空的。但它没有用

characterAdapter.stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY
Run Code Online (Sandbox Code Playgroud)

我期望达到的目标:

能够滚动到列表底部并在不丢失滚动位置的情况下进行配置更改“无需随着列表变大而增加我的pageSize

https://github.com/doilio/DC-Characters

android kotlin android-architecture-components android-paging android-paging-library

5
推荐指数
1
解决办法
1907
查看次数