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();
}
};
在上面的代码中,我使用自定义自动完成来填充一些数据。这是完美的工作。但是当从自动完成中选择一个值时,我需要更改位于自动完成旁边的编辑文本的值。这里问题是在调用Additem方法时动态创建自动完成和编辑文本。
答案 0 :(得分:0)
您必须使用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();
}
});
每当AutocompleteTextView中的文字发生变化时,您都可以在onTextChanged()方法中执行必要的任务。您可以找到有关TextWatcher
here的更多详细信息。
答案 1 :(得分:0)
让你的编辑文本最终,
final EditText d_no = new EditText(getActivity());
并在自动完成文本视图的onItemClickListener()中设置值,
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();
}
};
仅当您一次只创建一个edittext时,这才有效。如果您创建了多个标记,则必须设置不同的标记,然后在设置值时检查标记。