gpt4 book ai didi

java - 将 addTextChangedListener() 添加到循环中创建的每个 EditText 对象

转载 作者:行者123 更新时间:2023-12-01 15:37:02 24 4
gpt4 key购买 nike

我想创建 n 个 EditText 对象...所以我使用 LayoutInflater 在一个循环中执行此操作,直到 n ... View 是添加到布局,但如果我想向每个 EditText 对象添加 addTextChangedListener() ,则监听器仅添加到最后一个对象......这是一个问题关闭,我该如何解决这个问题?

    LinearLayout ll=(LinearLayout) findViewById(R.id.i1);
LayoutInflater li=(LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
for(int i=0;i<3;i++){
v=li.inflate(R.layout.addit, null); //v is a View declared as private member of the class
t=(TextView) v.findViewById(R.id.a1);//t is TextView declared as private member
EditText e=(EditText) v.findViewById(R.id.e1);
e.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

}

public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {

}

public void afterTextChanged(Editable arg0) {
ret(v, t);
}
});
ll.addView(v);

}

ret函数

   public void ret(View v,TextView t){
EditText e=(EditText) v.findViewById(R.id.e1);
t.setText(e.getText());

}

主要 xml :

   <?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/i1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

</LinearLayout>

addit.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/l2"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical" >
<TextView
android:id="@+id/a1"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:text="" />
<EditText
android:id="@+id/e1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName" >

<requestFocus />
</EditText>

</LinearLayout>

监听器仅监听最后一个 EditText View 中的更改...如何使其监听所有三个 EditText View ?

最佳答案

这是因为您的 vt 变量在每个循环中都会被覆盖,使它们指向最后一个 View 和 TextView。

尝试将代码更改为:

final View v=li.inflate(R.layout.addit, null);
final TextView t=(TextView) v.findViewById(R.id.a1);

关于java - 将 addTextChangedListener() 添加到循环中创建的每个 EditText 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com