首页 > 解决方案 > 数据绑定不适用于 Android 中的 EditText

问题描述

我正在尝试在我的项目中实现一个简单的数据绑定。我正在尝试从 EditText 中输入的文本中删除空格,但它在编译时失败。以下是代码。有人可以帮忙吗?

自定义 BindingAdapter 类

    public class BindingAdapters {

    @BindingAdapter("nospace")
    public static void setText(TextView textView, boolean value) {
        
    }
} // I also tried with signature public static void setText(TextView textView, String value)

布局xml

       <EditText
        android:id="@+id/first_name"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        app:layout_constraintTop_toBottomOf="@+id/first_lastname"
        app:layout_constraintLeft_toLeftOf="parent"
        app:nospace="true" />

分段

@Override
public View onCreateView(@NonNull LayoutInflater inflater,
                         @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState ) {
    Log.w("MainFragment", "onCreateView...");
    binding = DataBindingUtil.inflate(inflater, R.layout.main_fragment, container, false);
    MyViewModel mainViewModel = MyViewModel .getInstance();
    binding.setMyViewModel(mainViewModel);
    return binding.getRoot();
}

视图模型

    public class MyViewModel extends ViewModel {

    private static MyViewModel myViewModel;
    private User user;

    private MyViewModel() {
    }

    public static MyViewModel getInstance() {
        if(myViewModel == null) {
            myViewModel = new MyViewModel();
        }
        return myViewModel;
    }
   }

我得到的错误是 AAPT: error: attribute nospace (aka com.example.portfolio:nospace) not found.

标签: androiddata-binding

解决方案


这将为您完成工作。

 <EditText
        android:id="@+id/first_name"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        app:layout_constraintTop_toBottomOf="@+id/first_lastname"
        app:layout_constraintLeft_toLeftOf="parent"
        app:nospace="@{true}" /> //in databinding you should always use @{}

推荐阅读