im my User
class У меня есть один BindingAdapter
, который называется loadImage
, и теперь он отлично работает
class User : BaseObservable() {
var username: String? = null
var password: String? = null
var profilePicUrl: String? = null
companion object {
@BindingAdapter("android:profilePicUrl")
fun loadImage(view: ImageView, imageUrl: String) {
Picasso.get().load(imageUrl).into(view)
}
}
}
, так как у меня есть больше функций, с которыми я хочу использовать ихдругой класс, например:
object BindingAdapters {
@JvmStatic
@BindingAdapter("android:profilePicUrl")
fun loadImage(view: ImageView, imageUrl: String) {
Picasso.get().load(imageUrl).into(view)
}
}
моя проблема в том, что я не могу использовать этот класс как BindingAdapters
на Activity
или эту модель ViewModel, такую как User
мой LoginActivity
класс:
class LoginActivity : AppCompatActivity(), LoginResultCallbacks {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: LoginActivityBinding = DataBindingUtil.setContentView(this, R.layout.login_activity)
binding.viewModel = ViewModelProviders.of(this, LoginViewModelFactory(this)).get(LoginViewModel::class.java)
}
...
}
LoginViewModel
класс:
public class LoginViewModel extends ViewModel {
private User user;
private LoginResultCallbacks loginResultCallbacks;
public LoginViewModel(LoginResultCallbacks loginResultCallbacks) {
this.loginResultCallbacks = loginResultCallbacks;
this.user = new User();
}
}
LoginViewModelFactory
класс
public class LoginViewModelFactory extends ViewModelProvider.NewInstanceFactory {
private LoginResultCallbacks loginResultCallbacks;
public LoginViewModelFactory(LoginResultCallbacks loginResultCallbacks) {
this.loginResultCallbacks = loginResultCallbacks;
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
return (T) new LoginViewModel(loginResultCallbacks);
}
}