Tag: mvvm

RecyclerView在另一个RecyclerView(Mvvm + Databinding + Kotlin)

我想创建一个像instagram主屏幕的屏幕: 这个屏幕的结构看起来像(水平)recyclerView在另一个RecyclerView(垂直)的标题。 但是我不确定,这是不是一个最好(可能)的方式来做到这一点。 或者什么是最好的方法(做法)呢? 如果你能跟我分享你的想法,我会很高兴。

如何在android中从viewmodel调用baseactivity函数

您好我有LoginActivity和LoginViewModel和一些更多的类。 我有showLoading并hideLoading在BaseActivity所以它可以从每个活动访问。 我能够从LoginViewModel像mNavigator?.startForgotPasswordActivity()调用LoginActivity方法mNavigator?.startForgotPasswordActivity() 我想从LoginViewModel调用它,然后使用MVVM做到这一点? 或者我正在用错误的方法去做。 请建议什么是正确的方法来做到这一点? BaseActivity.kt abstract class BaseActivity : AppCompatActivity(), AnkoLogger { private val progressBar: ProgressBar? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } protected fun getToolbar(): Toolbar { val toolbar: Toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) return toolbar } protected fun performDependencyInjection() { AndroidInjection.inject(this); } @TargetApi(Build.VERSION_CODES.M) fun requestPermissionsSafely(permissions: Array<String>, requestCode: Int) { if […]

LiveData观察器不会在回调中触发

当发送回调时,LiveData观察器不会触发。 但是,如果我把可观察的数据放在一个函数中,并且改变数据,它就可以正常工作。 请任何想法是什么? fun connect(address: String){ protocolARC.value = ProtocolARC() //OKAY!!!! bleManager.gattClient.onCreate(getApplication(), address, object : GattClient.OnCounterReadListener { override fun onCounterRead(value: Int) { Log.d("HURRAY", "read") protocolARC.value = ProtocolARC() //NOT OKAY????? } override fun onConnected(success: Boolean) { stopScan() } }) }

如何从mvvm模式登录成功viewmodel启动活动

嗨,我有一个活动LoginActivity.kt和LoginViewModel 。 我在LoginViewModel的login方法中调用登录API。 在成功之后,我想开始家庭活动。 在MVVM方法中,正确的方法是什么? LoginViewModel.kt class LoginViewModel : BaseViewModel<LoginNavigator>(), AnkoLogger { val emailField = ObservableField<String>() private val email: String get() = emailField.get() val passwordField = ObservableField<String>() private val password: String get() = passwordField.get() val progressVisibility: ObservableInt = ObservableInt(View.GONE) @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") fun login(view: View) { // here I am calling API and on success } /** […]

在从webservice服务检索数据之前和之后,从ViewModel设置ProgressBar可见性

我正在使用MVVM设计模式和MVVM Light工具包创建Windows Phone 8.1应用程序。 我正在尝试创建一个简单的登录页面,从用户获取用户名和密码并使用web服务进行身份验证。 在这个身份验证过程中,我想在页面顶部显示一个ProgressBar(加载点),以指示正在发生的事情。 我已经成功创建了我的ViewModel并绑定了我的视图,以允许我通过连接到我的登录按钮的命令来控制ProgressBar的可见性。 这可以工作,但是,只有在整个登录过程完成后,UI才会更新以显示ProgressBar,从而使得进度指示符毫无意义。 如何首先设置ProgressBar的可见性(并有UI更新),然后关闭执行我的登录过程? 这里是一些代码: XAML <ProgressBar IsIndeterminate="True" Height="1" Visibility="{Binding Login.ProgressVisibility, UpdateSourceTrigger=PropertyChanged, FallbackValue=Collapsed}" /> 视图模型 public class LoginViewModel : ViewModelBase { private IDialogService dialogService; private INavigationService navigationService; private string _username; private string _password; private Visibility _progressVisibility = Visibility.Collapsed; /// <summary> /// User login name / email address /// </summary> public […]

如何使用数据绑定库观察房间数据库中的LiveData更改

第一次实施房间和数据绑定。 在我的ViewModel : var numberOfClubs = ObservableInt(0) private var clubs: LiveData<List<Club>> = clubDao.getAllClubs() 然后我尝试在插入到Room数据库后获得clubs.value ,但每次都得到一个KotlinNullPointerException 。 fun addClubs() { Observable.fromCallable({ clubDao.insertClubs(listOf(Club(null, "clubName")) }) .subscribeOn(schedulerFacade.computation) .subscribe( { numberOfClubs.set(clubs.value!!.size) <— Kotlin NPE }, { error -> logWrapper.e("MainViewModel", error.message!!) clubError.set(true) }) } 在我的XML中,我打电话: android:text="@{viewModel.numberOfClubs}" 。 由于插入到房间数据库不会导致任何东西被返回,我不能设置numberOfClubs与结果。 我认为clubs应该跟踪变化?