您知道如何获得触发事件的视图吗? 例如:
final AutoCompleteTextView edtxInput = (AutoCompleteTextView)layout.findViewById(R.id.edtx_input);
edtxInput.setThreshold(2);
edtxInput.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) {
Console.debug(TAG, "view: " + arg1, Console.Liviu);
edtxInput.setText(((FormOption)edtxInput.getAdapter().getItem(position)).getDescription());
}
});
这里的问题是我不知道如何在OnItemClickListener中更新edtxInput中的文本,而不是最终的。
由于
答案 0 :(得分:2)
选中此http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
参数
parent发生点击的AdapterView。
arg1是AutoCompleteTextView(edtxInput)本身。所以你可以做到
AutoCompleteTextView edtxInput = (AutoCompleteTextView)layout.findViewById(R.id.edtx_input);
edtxInput.setThreshold(2);
edtxInput.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) {
Console.debug(TAG, "view: " + arg1, Console.Liviu);
AutoCompleteTextView medtxInput = (AutoCompleteTextView)parent;
medtxInput.setText(((FormOption)medtxInput.getAdapter().getItem(position)).getDescription());
}
});
<强>更新强>
似乎AutoCompleteTextView
不是AdapterView的子类。这是SDK的某些部分“错误”。要获得AutoCompleteTextView
你可以做一个黑客
AutoCompleteTextView medtxInput = (AutoCompleteTextView)view.getParent();
因此,您获得点击的视图,然后获取其AutoCompleteTextView
但是为什么你不希望AutoCompleteTextView
首先成为最终的?有什么特别的原因吗?
如果您只想要适配器,则只能编写此
((ChildClass)parent.getItemAtPosition(position)).getDescription();
答案 1 :(得分:0)
将edtxInput声明为全局变量,以便在整个类中可以访问此变量。
答案 2 :(得分:0)
为什么制作变量决赛对你来说太糟糕了?你可以用任何方式使edtxInput全局化。见下面的代码
public class myActivity extends Activity implements OnItemClickListener {
AutoCompleteTextView mEditTextInput;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mEditTextInput = (AutoCompleteTextView)layout.findViewById(R.id.edtx_input);
mEditTextInput.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) {
Console.debug(TAG, "view: " + arg1, Console.Liviu);
mEditTextInput.setText(((FormOption)mEditTextInput.getAdapter().getItem(position)).getDescription());
}
}
多数人。