Мои данные модели представления не привязаны к тексту редактирования - PullRequest
0 голосов
/ 20 марта 2020

Я привязал модель представления к действию, и оно работает нормально, но в другом упражнении, к которому я привязал свою модель представления, не отображаются никакие данные. Вот моя переменная viewmodel в моей деятельности:

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >
    <data>
        <variable name="profileViewModel"
            type="com.kreeti.gogal.ui.profile.ProfileViewModel"
            />
    </data>
   ......
   <EditText
       style="@style/convertible_edit_text"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:drawableEnd="@drawable/ic_edit"
       android:text="@={profileViewModel.firstName}"/>

вот моя viewmodel:

class ProfileViewModel constructor(
    val repository: ProfileRepository,
    private val mContext: Context
) : ViewModel() {
    var firstName: String? = null
    ....
init {
      Coroutines.main {
           try {
               repository.getProfileDetails().let {
                   firstName = it.data.first_name  // Here I am fetching the data
                }
           ....
     }
}

это мой класс активности

class EditProfile : AppCompatActivity(), ResponseListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val networkConnectionInterceptor = NetworkConnectionInterceptor(this)
        val api = BaseApi.invoke(networkConnectionInterceptor, AuthorizedApi::class.java)
        val profileRepository = ProfileRepository(api)
        val factory = ProfileViewModelFactory(profileRepository, this)
        val viewModel = ViewModelProvider(this, factory).get(ProfileViewModel::class.java)

        val binding: ActivityEditProfileBinding = DataBindingUtil.setContentView(this, R.layout.activity_edit_profile)
        binding.profileViewModel = viewModel
     }

Я не могу понять почему мой текст редактирования не получает данные

1 Ответ

0 голосов
/ 20 марта 2020

Если вы используете привязку данных в вашем xml, оно должно быть: android:text="@{profileViewModel.firstName}" вместо android:text="@={profileViewModel.firstName}", кроме того, я не вижу никаких проблем.

Вас также может заинтересовать это codelab

PS: profileViewModel не должно иметь никакой ссылки на context, так как это может привести к некоторой ошибке, если вам действительно нужно context, вы можете использовать AndroidViewModel вместо ViewModel реализация. AndroidViewModel дает вам доступ к ApplicationContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...