4 回答
TA贡献1712条经验 获得超3个赞
您可以尝试使用数据绑定库。它具有连接视图和数据源的功能。
例如,您可以在 Activity 中有一个 ObservableString:
ObservableField<String> noOfOvers = new ObservableField<String>()
然后,在你的 xml 中,你应该添加一个绑定到这个数据:
<layout
xmlns:android=”http://schemas.android.com/apk/res/android"
xmlns:tools=”http://schemas.android.com/tools">
<data>
<import type="android.databinding.ObservableField"/>
<variable name="noOfOvers" type="ObservableField<String>"
</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:text=”@{noOfOvers}”/>
</LinearLayout>
</layout>
现在,一旦您在 EditText 中进行了更改,它的值将自动分配给 noOfOvers 变量。
TA贡献1845条经验 获得超8个赞
您可以将更改侦听器添加到您的 edittext 然后将字符串设置为您的 edittext 或其他
youredittext.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if(s.length() != 0)
field2.setText("");
}
});
TA贡献1848条经验 获得超2个赞
您可能想要使用TextView#addTextChangedListener(文档)。
这很容易。
chooseOverEdttext.addTextChangedListener(
new TextWatcher() {
@Override
public void onTextChanged(
final CharSequence text,
final int start,
final int before,
final int count) {
final String noOfOvers = text.toString();
// Process your String, or use CharSequence directly
}
@Override
public void beforeTextChanged(
final CharSequence text,
final int start,
final int count,
final int after) { }
@Override
public void afterTextChanged(final Editable editable) {
// Editable represents the changed text. If you need to process
// the inserted text and modify it, you can apply these modifications
// here, directly to the Editable instance. Be carefult as it might be called recursively.
}
}
);
如果您经常使用TextWatcher(s),您可能还想创建一个Adapter,这是一个将这三种方法实现为无操作的基类。然后你将能够只覆盖你感兴趣的那个。更干净!
TA贡献1752条经验 获得超4个赞
您可以通过将 textchangeListner 添加到 editText 来实现。
这是您的代码的正确实现:
chooseOverEdttext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
setString();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
private void setString(){
String overs=chooseOverEdttext.getText().toString();
if (!(TextUtils.isEmpty(overs)||overs.equals("0")))
{
noOfOvers=overs;
}
}
只需复制并粘贴此代码代替您当前的代码
添加回答
举报