草庐IT

Jetpack学习之ViewModel、Lifecycles、LiveData

全部标签

android - 无法解析 : livedata-core

我只是想在androidstudio3.1.4中打开一个现有项目。解决所有错误后,我想不出这个新错误:Failedtoresolve:livedata-coreOpenFileFailedtoresolve:livedata-coreOpenFile它指的是项目的两个文件(build.gradle)s一个是这样的://noinspectionGradleDependencyapplyplugin:'com.android.application'buildscript{repositories{mavenCentral()maven{url'https://maven.fabric.i

android - LiveData 防止在开始观察时收到最后一个值

是否可以防止LiveData在开始观察时收到最后一个值?我正在考虑将LiveData用作事件。例如显示消息、导航事件或对话触发器等事件,类似于EventBus。关于ViewModel和fragment之间通信的问题,Google给了我们LiveData来用数据更新View,但是当我们需要更新时这种通信方式不适合Viewonlyoncewithsingleevent,我们也不能在ViewModel中保存View的引用并调用一些方法,因为它会造成内存泄漏。我发现了类似的东西SingleLiveEvent-但它仅适用于1个观察者,不适用于多个观察者。---更新----正如@EpicPanda

android - LiveData 双向数据绑定(bind),无需公开 MutableLiveData

我正在尝试在EditText上使用双向数据绑定(bind),如果我将字段公开为MutableLiveData就可以正常工作,因为它通常在我在网上找到的示例中看到。但是,有充分的理由不公开MutableLiveData,并且这些理由并非神奇地无效,因为我决定使用数据绑定(bind)库。编辑:这里的主要动机是MyViewModel应该保持对设置数据的控制(这就是为什么不建议直接公开MutableLiveData的原因),在setter中我可以执行任何检查或必要的转换,然后只需在LiveData上调用setValue。我通常从我的ViewModel公开一个LiveDatagetter和一个单

java - 如何修复 Jetpack 导航弹出行为不正确的动画?

当使用jetpack导航主机组件时,我遇到了导航“PopBehaviour”的问题,它使用了与我想要的不同的动画,我不确定如何强制使用不同的动画。在屏幕之间流动时,我试图让它们“从右向左流动”,类似于iOS的导航。但是,当我添加弹出行为以便Fragment3直接返回到Fragment1,从Fragment2到Fragment3有Fragment2向右移动,而不是向左移动。我已经在这个存储库中重现了这个问题:https://github.com/AtomicSimon/Android-Replication-Screen-Flow这是我使用的简单屏幕流程:这是导航图XML:我希望Frag

android - 如何从 Jetpack Compose 中的 drawable 加载图像?

我试过下面的代码,但它在UI中没有反射(reflect)任何内容,我在这里遗漏了什么?classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContent{loadUi()}}@ComposablefunloadUi(){CraneWrapper{MaterialTheme{Image((ResourcesCompat.getDrawable(resources,R.mipmap.ic_launc

android - 过滤由 View 模型的 LiveData 条目填充的回收器 View

我正在使用架构组件View模型的LiveData来填充回收器View,并想添加一个搜索View过滤器,但找不到任何解决方案。我尝试在适配器中使用可过滤接口(interface),但它也不起作用,可能是因为View模型不允许它更改。我的适配器是-publicclassNetworkAdapterextendsRecyclerView.AdapterimplementsFilterable{//MembervariabletohandleitemclicksfinalprivateItemClickListenermItemClickListener;//Classvariablesfor

安卓喷气背包 : RecyclerView is not updating when LiveData is set

所以我有一个简单的实现来在RecyclerView中显示用户列表,并在ViewModel中查询该列表作为LiveData.问题是UI未更新以显示最新列表-称为users-即使观察到列表也是如此。我现在只是设置了一个演示用户列表。这是我的View模型:classMainViewModel:ViewModel(){privatevaldemoData=listOf(User(userName="Bob",favoriteColor="Green"),User(userName="Jim",favoriteColor="Red"),User(userName="Park",favoriteC

android - 如何将 editText 值传递给 viewModel 和 Livedata (Kotlin)

我正在研究Android+Kotlin,做一个简单的例子来理解LiveData+ViewModel。非常简单:我有一个根Activity和两个fragment。FragmentOne有两个EditText。对这些值求和,我需要将结果传递给ViewModel。然后我在根Activity和FragmentTwo中使用观察来查看更改的数据。fragment一classFragmentOne:Fragment(){privatevalmodelbylazy{ViewModelProviders.of(activity).get(MyViewModel::class.java)}varresul

android - 使用 LiveData 转换获取 Room 关系数据库值

Android和Java的新手,正在尝试通过制作应用来学习。但现在我无法正确获取关系数据并将其显示在RecyclerView中(使用ListAdapter和InfiniteScroll)。这是我到目前为止所做工作的要点。实体:项目:@Entity(...)publicclassItem{@PrimaryKey(autoGenerate=true)privatelongitem_id;@SerializedName("title")@ExposeprivateStringtitle="";@Ignore@SerializedName("labels")@ExposeprivateList

java - Jetpack 数据绑定(bind)在同一文件中生成了与同一类相同的重复类

今天早上我收到一个错误,我的应用无法安装,我已将其归结为这个问题。我在同一个文件中有两个相同的类。我不想包含整个生成的文件,因为它很长。publicclassAddVinDialogFragmentBindingextendsandroidx.databinding.ViewDataBindingimplementsandroid.databinding.generated.callback.OnClickListener.Listener{@Nullableprivatestaticfinalandroidx.databinding.ViewDataBinding.IncludedL