1

您知道如何获取触发事件的视图吗?举例:

    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 更新文本而不使其成为最终文本。

谢谢

4

3 回答 3

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();
于 2012-09-19T07:50:52.273 回答
0

将 edtxInput 声明为全局变量,以便在整个类中可以访问该变量。

于 2012-09-19T07:49:19.863 回答
0

为什么使变量 final 对您如此不利?任何可以使 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());
    }
}

就这样。

于 2012-09-19T08:28:02.343 回答