我最近看到谷歌有一个很棒的数据分页库。
在这个 Google IO 中:
Android Jetpack:使用 RecyclerView 和 Paging 管理无限列表(Google I/O '18)
他们解释了如何Data + Network DataSource从数据库中创建和获取数据Single Source of Truth,当数据库没有数据时,它会通过 .NET 从网络请求更多数据BoundaryCallback。
因此,假设我在服务器上有一个电影列表。客户端(Android 用户)可以按受欢迎程度、标题、发布日期等对它们进行排序。
因此,如果用户第一次按标题对电影进行排序,一切都会很好,因为数据库中没有数据,并且将从服务器请求数据以按标题对它们进行排序并将其发送回来。但是,如果用户尝试按受欢迎程度对它们进行排序怎么办?由于数据库中存在大量电影(例如 50 部电影),它会按受欢迎程度对少量电影进行排序,然后尝试从服务器获取数据,这不是一个好的体验。
我无法为每种排序类型制作表格,因为这不是一个好的做法。那么我该如何克服这个问题呢?
非常感谢
sorting android android-architecture-components android-paging
考虑以下简单设置。1 个片段与 1 个 ViewModel:
分段
class TestFragment : Fragment() {
private val viewModel by lazy {
ViewModelProviders.of(this).get(TestViewModel::class.java)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_test, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.testLiveData.observe(viewLifecycleOwner, androidx.lifecycle.Observer {
Log.d("###", "whattt")
})
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型
class TestViewModel : ViewModel() {
private val myVariable = Log.d("###", "Test")
val testLiveData = MutableLiveData(false)
}
Run Code Online (Sandbox Code Playgroud)
为什么我从 Fragment 和 ViewModel 获得最多三倍的日志输出?
D/###: Test
D/###: whattt
D/###: Test
D/###: …Run Code Online (Sandbox Code Playgroud) android kotlin android-livedata android-viewmodel android-architecture-components
我正在尝试为我的协程创建惰性函数。我创建了这样的 util 函数。
fun <T> lazyCoroutine(scope: CoroutineScope, block: suspend CoroutineScope.() -> T): Lazy<T> {
val some = scope.async(start = CoroutineStart.LAZY) {
block.invoke(this)
}
return lazy {
some.await()
}
}
Run Code Online (Sandbox Code Playgroud)
但在终端显示
我也不想回来Deferred<T>,我只想回来刚出来的deferred。我看到大部分文章返回的内容Deferred<T>与我的场景不符。有没有相关的解决办法请指点一下。祝你有美好的一天!。
我在Android Studio3.6.1,在我的应用程序中build.gradle我有例如
implementation 'androidx.fragment:fragment-ktx:1.2.2'
Run Code Online (Sandbox Code Playgroud)
1.2.3 自 3 月 18 日以来就有版本,但当我将鼠标悬停在依赖项上或模块设置- >建议中时,都没有显示更新提示。
未显示更新的原因可能是什么?我可以以某种方式Android Studio手动触发来搜索依赖项更新并检查Android Studio上次是什么时候这样做的吗?
android android-fragments android-studio android-architecture-components
我最近开始研究 Android 架构组件。我发现 MVVM 架构非常方便,我想掌握它。在设计我的应用程序时,我应该为不同的活动/片段使用多个 ViewModel,还是应该为所有活动/片段使用单个 ViewModel?这两种方法的优缺点是什么?谢谢你。
android mvvm viewmodel android-livedata android-architecture-components
我正在尝试测试一个简单的CoroutineWorker使用AndroidJUnit4,如官方文档
提到的
我的测试和错误:
package com.shalaga44.workmanager
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.work.testing.TestListenableWorkerBuilder
import kotlinx.coroutines.runBlocking
import org.hamcrest.Matchers.`is`
import org.junit.Assert.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class SleepWorkerTest {
private lateinit var context: Context
@Before
fun setUp() {
context = ApplicationProvider.getApplicationContext() }
@Test
fun testSleepWorker() {
val worker = TestListenableWorkerBuilder<SleepWorker>(context).build()
runBlocking {
val result = worker.doWork()
assertThat(result, `is`(Result.success())) //The Error here
//Type inference failed. Please try to specify type arguments explicitly.
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的工人: …
junit unit-testing kotlin android-architecture-components android-workmanager
他们如何在后台工作?
我对 PagedListAdapter 有点熟悉,但对 PagingDataAdapter(paging 3) 不太熟悉。PagingDataAdapter 的主要用途是什么,与 PagedListAdapter 有何不同
android android-architecture-components android-jetpack android-paging
我正在开发一个交易应用程序。我需要列出用户股票及其价值(利润或损失)以及投资组合的总价值。
对于馆藏列表,在 MVP 架构中,我将为每个列表项创建一个演示者,但对于此应用程序,我决定使用 MVVM(Compose、ViewModels 和 Hilt)。我的第一个想法是为每个列表项创建一个不同的 ViewModel。我hiltViewModel()在可组合方法签名中使用来创建 ViewModel 的实例,但这总是给我相同的实例,而这不是我想要的。使用 MVVM 架构时,我正在尝试以正确的方式执行操作还是应该使用单个 ViewModel?您知道我可以看看的任何项目吗?下图是我的实际屏幕的超级简化,每个单元格都很复杂,这就是为什么我想为每个单元格使用不同的 ViewModel。任何建议都非常受欢迎。
android mvvm viewmodel android-architecture-components android-jetpack-compose
在我的Android Clean体系结构中真的需要使用UseCases吗?
在Android Jetpack 文档中,他们没有提及它。他们直接从ViewModels访问资源库。
这不是更好的选择吗?难道UseCase代码不仅使调整代码变得不必要地困难了吗?
android mvvm clean-architecture android-architecture-components android-jetpack
I am very new using Android architecture components, so I decided to base my application using GithubBrowserSample to achieve many of my use cases. But i have the problem that i don´t know what is the correct way to share viewmodels between fragments with this approach.
I want to share the view model because i have a fragment with a viewpager with 2 fragments that need to observe data of the parent fragment view model
I used this before to …
android mvvm kotlin dagger-2 android-architecture-components
android-architecture-components ×10
android ×9
mvvm ×4
kotlin ×3
viewmodel ×2
dagger-2 ×1
junit ×1
sorting ×1
unit-testing ×1