我要自动将editext值分配给字符串
当我单击它分配的按钮但不是自动
private void OverValidation()
{
if (!noOfOvers.equals("0"))
{
noOfOvers=chooseOverEdttext.getText().toString();
}
else
{
Toast.makeText(getActivity(), "Please choose no of overs", Toast.LENGTH_SHORT).show();
}
}
我想要在编辑文本中输入文本时同时为字符串分配值
答案 0 :(得分:0)
您可能要使用TextView#addTextChangedListener
(documentation)。
很简单。
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
,您可能还想创建一个Adapter
,它是将这三种方法实现为无操作的基类。这样一来,您将只能覆盖您感兴趣的那个。更干净!
答案 1 :(得分:0)
您可以尝试使用Data Binding Library。它具有用于连接视图和数据源的功能。
例如,您可以在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变量。
答案 2 :(得分:0)
您可以将更改侦听器添加到您的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("");
}
});
答案 3 :(得分:0)
您可以通过使用addTextChangedListener
上的EditText
获得自动更新。这是示例。
x = (EditText) findViewById(R.id.x);
x.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) {
}
@Override
public void afterTextChanged(Editable editable) {
String tmp = editable.toString();
if(!tmp.equals(""))
h = Double.parseDouble(tmp);
}
});
答案 4 :(得分:0)
您可以通过将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;
}
}
只需复制并粘贴此代码即可代替当前代码