Android 从“自动完成”中选择值时更改编辑文本的值 public void Add_Item(){ ll=新的线性布局(getActivity()); ll.设置方向(水平线性布局); LinearLayout.LayoutParams params=新的LinearLayout.LayoutParams( LayoutParams.WRAP_内容,LayoutParams.WRAP_内容); CustomAutoCompleteTextView a_no=新建CustomAutoCompleteTextView( getActivity(),null); a_no.setId(3); a_no.setAdapter(适配器); a_no.setHint(“账号”); a_no.setEms(10); a_no.setThreshold(1); a_编号设置标签(“a_编号”); a_编号设置填充(10,10,10,10); a_no.setOnItemClickListener(autoItemSelectedListner); ll.addView(a_编号); **EditText d_no=新的EditText(getActivity()); d_.编号setId(3); d_no.setHint(“说明编号”); d_.no.setEms(10); d_编号设置标签(“d_编号”); d_编号设置填充(10,10,10,10); ll2.添加视图(d_编号)** ll.addView(ince); ly.addView(ll); } 私有OnItemClickListener autoItemSelectedListner=新建OnItemClickListener(){ @凌驾 公共链接(AdapterView arg0、视图arg1、内部arg2、, 长arg3){ HashMap hm=(HashMap)arg0 .getAdapter().getItem(arg2); ViewGroup ViewGroup=(ViewGroup)arg0.getParent(); } };
在上面的代码中,我使用自定义自动完成来填充一些数据。它工作得很好。但是,当从自动完成中选择值时,我需要更改位于自动完成旁边的编辑文本的值。这里的问题是,在使用Additem方法时,自动完成和编辑文本是动态创建的已调用。您必须使用TextWatcherAndroid 从“自动完成”中选择值时更改编辑文本的值 public void Add_Item(){ ll=新的线性布局(getActivity()); ll.设置方向(水平线性布局); LinearLayout.LayoutParams params=新的LinearLayout.LayoutParams( LayoutParams.WRAP_内容,LayoutParams.WRAP_内容); CustomAutoCompleteTextView a_no=新建CustomAutoCompleteTextView( getActivity(),null); a_no.setId(3); a_no.setAdapter(适配器); a_no.setHint(“账号”); a_no.setEms(10); a_no.setThreshold(1); a_编号设置标签(“a_编号”); a_编号设置填充(10,10,10,10); a_no.setOnItemClickListener(autoItemSelectedListner); ll.addView(a_编号); **EditText d_no=新的EditText(getActivity()); d_.编号setId(3); d_no.setHint(“说明编号”); d_.no.setEms(10); d_编号设置标签(“d_编号”); d_编号设置填充(10,10,10,10); ll2.添加视图(d_编号)** ll.addView(ince); ly.addView(ll); } 私有OnItemClickListener autoItemSelectedListner=新建OnItemClickListener(){ @凌驾 公共链接(AdapterView arg0、视图arg1、内部arg2、, 长arg3){ HashMap hm=(HashMap)arg0 .getAdapter().getItem(arg2); ViewGroup ViewGroup=(ViewGroup)arg0.getParent(); } };,android,Android,在上面的代码中,我使用自定义自动完成来填充一些数据。它工作得很好。但是,当从自动完成中选择值时,我需要更改位于自动完成旁边的编辑文本的值。这里的问题是,在使用Additem方法时,自动完成和编辑文本是动态创建的已调用。您必须使用TextWatcher public void Add_Item() { ll = new LinearLayout(getActivity()); ll.setOrientation(LinearLayout.HORIZONTAL);
public void Add_Item() {
ll = new LinearLayout(getActivity());
ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
CustomAutoCompleteTextView a_no = new CustomAutoCompleteTextView(
getActivity(), null);
a_no.setId(3);
a_no.setAdapter(adapter);
a_no.setHint("Account No");
a_no.setEms(10);
a_no.setThreshold(1);
a_no.setTag("a_no");
a_no.setPadding(10, 10, 10, 10);
a_no.setOnItemClickListener(autoItemSelectedListner);
ll.addView(a_no);
**EditText d_no = new EditText(getActivity());
d_no.setId(3);
d_no.setHint("Description No");
d_no.setEms(10);
d_no.setTag("d_no");
d_no.setPadding(10, 10, 10, 10);
ll2.addView(d_no);**
ll.addView(ince);
ly.addView(ll);
}
private OnItemClickListener autoItemSelectedListner = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap<String, String> hm = (HashMap<String, String>) arg0
.getAdapter().getItem(arg2);
ViewGroup viewgroup = (ViewGroup) arg0.getParent();
}
};
每当AutocompleteTextView中的文本发生更改时,您都可以在onTextChanged()方法中执行必要的任务。您可以找到有关
TextWatcher
使编辑文本成为最终文本的更多详细信息
your_auto_completetextview.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
doSomething();
}
});
并在autocomplete textview的onItemClickListener()中设置值
final EditText d_no = new EditText(getActivity());
private-OnItemClickListener-autoItemSelectedListner=new-OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
HashMap hm=(HashMap)arg0
.getAdapter().getItem(arg2);
d_no.setText(“您的_值_here”);//将值设置为edittext
ViewGroup ViewGroup=(ViewGroup)arg0.getParent();
}
};
仅当一次仅创建一个edittext时,此选项才起作用。如果您创建了多个标记,则必须设置不同的标记,然后在设置值时检查标记。谢谢您的回复,但问题是我如何更改出现在自动完成问题旁边的编辑文本的值?只需将ed.setText(某物)放在onTextchanged()中@kgandroid如果我这样做,那么每当我在autocomplete textview中键入字符时,edittext中的文本将被更改。然后每当我在autocomplete中写入任何内容时,必须调用removeTextChangedListener(watcher)),设置文本后,我们必须使用addTextChangedListener(watcher)重新启用侦听器)。此外,我们还可以使用一些布尔值来检测状态。该逻辑必须由程序员实现。这种方法无法获取编辑文本的值,因为编辑文本是动态生成的。请尝试此方法。并计算它给出1的子元素数,即使我有3个子元素。哪个子元素计数?自动完成的父元素是线性布局。它包含2个子项(例如:e_no和d_no),您使用过ll.getChildCount();:是的,运气不好
private OnItemClickListener autoItemSelectedListner = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap<String, String> hm = (HashMap<String, String>) arg0
.getAdapter().getItem(arg2);
d_no.setText("your_value_here");//To set the value to edittext
ViewGroup viewgroup = (ViewGroup) arg0.getParent();
}
};