如何使用DataBinding在Button单击后显示和隐藏视图

时间:2019-03-18 14:26:57

标签: android android-databinding

我有2个Editfields,一个提交按钮和一个Textview,首先用户填写了编辑字段,然后单击提交按钮。我必须检查所有字段是否有效,如果有效,那么我想显示使用数据绑定显示textview。 我在xml中存在数据绑定问题。我想我缺少了一些东西 这是我的textview

withWidth

这是我的助手课程

<data>

    variable
        name="helper"
        type="com.abc.online.views.helper.OtpNoteBinderHelper" />
</data>
<TextView
                    android:id="@+id/idtverrorMsg"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/_3sdp"
                    android:fontFamily="@font/montserrat_regular"
                    android:gravity="center_horizontal"
                    android:letterSpacing="-0.01"
                    android:text="@string/ops_looks_like_you_apos_ve_entered_a_wrong_code"
                    android:textColor="#ff3b30"
                    android:textSize="@dimen/text_size_9"
                    app:presentation_note="false"
                    android:visibility="@{helper.is_presentation_note_visible ? View.VISIBLE : View.GONE}" />

}

2 个答案:

答案 0 :(得分:0)

这可能不是您会找到的最佳答案,但确实可以完成工作。

由于我们没有使用两种方式进行数据绑定,因此我在MainActivity中监听了提交按钮的onClick,在其中我更改了NoteBinderhelper变量

    @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);

    final NoteBinderhelper noteBinderhelper = new NoteBinderhelper();

    mainBinding.setHelper(noteBinderhelper);

    mainBinding.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String textOne = mainBinding.editText1.getText().toString();
            String textTwo = mainBinding.editText2.getText().toString();

            if(textOne.isEmpty() || textTwo.isEmpty()){
                noteBinderhelper.setPresentationNoteViewVisible(false);

            } else {
                noteBinderhelper.setPresentationNoteViewVisible(true);
            }
            mainBinding.setHelper(noteBinderhelper);
        }
    });

}

对NoteBinderHelper类进行了细微更改

public class NoteBinderhelper extends BaseObservable {
private Boolean presentation_note;
private Boolean timerElementsVisible;

public NoteBinderhelper(){
    this.presentation_note = true;
    this.timerElementsVisible = false;
}
public void setPresentationNoteViewVisible(boolean presentationElementsVisible) {
    this.presentation_note = presentationElementsVisible;
    notifyPropertyChanged(BR.presentation_note);


 }

 @Bindable
 public Boolean getPresentation_note() {
    return presentation_note;
  } 
 }

然后我将textView的可见性更改为此

 android:visibility="@{helper.presentation_note ? View.VISIBLE : View.GONE}"

答案 1 :(得分:0)

您应该在MainActivity中执行此操作,因为隐藏或显示textView是updateUI,因此不要在OtpNoteBinderHelper类中进行操作