小编Ram*_*ama的帖子

如何使用Android数据绑定从UI更新对象?

我正在使用数据绑定,我创建了一个非常简单的类

public class ViewUser extends BaseObservable {
    private String name;

    @Bindable
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
        notifyPropertyChanged(BR.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

布局简单

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="user"
            type="com.example.ViewUser" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="top"
                    android:lines="3"
                    android:text="@{user.name}" />
    </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

当我更新对象时,UI更新没有任何问题,但是如果我从UI更改EditText的值然后让用户使用DataBindingUtil .getUser(),则它没有更新的值.是否可以自动更新属性,或者是否必须使用TextWatcher的onTextChanged等事件更新对象?

data-binding android bidirectional 2-way-object-databinding android-databinding

6
推荐指数
1
解决办法
6053
查看次数

SerialPort与MSComm

.Net SerialPort和VB6 MSComm有可能不同吗?

在这两种情况下,我都是从缓冲区读取数据,并且两者都有不同的字符串,如果我将MSComm dll导入我的.Net项目,它的工作完美(显然).

有没有人有更深入的信息?

如果它有帮助,这里是我的简单样本,在这两种情况下我发送相同的字节数组...

VB6:

Dim MSComm1 As Object
Dim ArrToSend() As Byte
Dim IncomeData As String
Set MSComm1 = CreateObject("MSCommLib.MSComm")
With MSComm1
    .CommPort = 1
    .PortOpen = True
End With

ReDim ArrToSend(4)
ArrToSend(0) = 179
ArrToSend(1) = 1
ArrToSend(2) = 92
ArrToSend(3) = 92
MSComm1.Output = ArrToSend
IncomeData = MSComm1.Input
Run Code Online (Sandbox Code Playgroud)

C#

SerialPort _serialPort = new SerialPort();
_serialPort.Open();
Byte[] _bytesToSend = new Byte[4];
_bytesToSend[0] = 179;
_bytesToSend[1] = 1;
_bytesToSend[2] = 92;
_bytesToSend[3] = 92;
_serialPort.Write(_bytesToSend, 0, …
Run Code Online (Sandbox Code Playgroud)

c# vb6 serial-port mscomm32

2
推荐指数
1
解决办法
8715
查看次数