我有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}" />
}
答案 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类中进行操作