我正在尝试新的Android数据绑定库(1.0-rc1),我创建了一个带有三个字符串字段(名称,电子邮件和年龄)的User对象,并将它们链接到我的布局中的3个EditTexts.
在第一个字段(名称)上放置了一个TextWatcher.一切似乎都运作良好.我通过在允许它调用setName之前检查文本是否不同来阻止名称字段中的notifyPropertyChanged循环.
问题是,每次输入名称字段时,光标会在每个字符后重置为EditText的左侧.我搜索了一个解决方案但大多数光标问题的修复建议说要抓取对EditText的引用并手动调整光标位置.但是我想避免这样做,因为我需要在EditText中找到ViewByID,而数据绑定的目的是试图避免这样做.谢谢您的帮助.
我的布局看起来像这样:
<layout>
<data>
<variable name="user" type="com.carlpoole.databindingstest.User"/>
</data>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/name"
android:text="@{user.name}"
bind:addTextChangedListener="@{user.nameChanged}"
/>
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/email"
android:layout_below="@+id/name"
android:text="@{user.email}"/>
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/age"
android:layout_below="@+id/email"
android:text="@{user.age}"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/age"
android:text="@{user.name}"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的用户对象如下所示:
import android.databinding.BaseObservable;
import android.databinding.Bindable;
import android.text.Editable;
import android.text.TextWatcher;
public class User extends BaseObservable {
private String name;
private String email;
private String age;
public User(String name, String …Run Code Online (Sandbox Code Playgroud) 我的字符串看起来像这样:
"Chitkara DK, Rawat DJY, Talley N. The epidemiology of childhood recurrent abdominal pain in Western countries: a systematic review. Am J Gastroenterol. 2005;100(8):1868-75. DOI."
Run Code Online (Sandbox Code Playgroud)
我想要的是获得大写字母(仅作为单独的单词)直到第一个点,得到:DK DJY N.但是之后不是其他人物,比如J DOI.
这是我的Java类Pattern的代码部分:
\\b[A-Z]{1,3}\\b
Run Code Online (Sandbox Code Playgroud)
正则表达式中是否有一般选项可以在某些字符后停止匹配?