AutoCompleteTextView侦听器无法正常工作

时间:2012-06-19 05:33:50

标签: android autocompletetextview

我有一个活动,其中包含一个按钮和2个自动完成小部件。对于我正在使用的按钮

addProductButton.setOnClickListener(this);

以及我正在使用的2个自动完成小部件

supplierTextView.setOnItemClickListener(this);

现在,当我选择第一个自动完成时,它会运行此代码,但是当我点击第二个自动完成中的项目时它也没有进入if循环它运行相同的代码但没有进入其他

@Override
public void onItemClick(AdapterView<?> adapter, View view, int pos, long rowId) {
// TODO -

    String supName = supplierTextView.getText().toString();

    String proName = productTextView.getText().toString();

    System.out.println("Name selected  "+ view.getId());

    if(view == supplierTextView)
    {
        Log.d("Supplier Name selected", supName);
    }
    else if(view == productTextView)
    {
        Log.d("Product Name selected", proName);
    }

    loadProducts(supName);
    handleProductSuccess(filteredProduct);

}

3 个答案:

答案 0 :(得分:0)

OnItemClickListener用于侦听自动填充文本字段项的点击次数。

也就是说,当您点击自动填充建议时,您会收到与该建议相对应的视图及其索引而不是 AutocompleteTextView本身。

如果您希望在单击视图本身时收到通知,请在AutocompleteTextViews上使用OnClickListener。

如果要对文本字段的文本内容中的更改做出反应,可以使用TextWatched侦听器界面。有关详细信息,请参阅TextView API

答案 1 :(得分:0)

在此声明中。

if(view == supplierTextView)
{
        Log.d("Supplier Name selected", supName);
}
else if(view == productTextView)
{
        Log.d("Product Name selected", proName);
}

视图的类型是TextView,所以什么也没发生。

如果您想知道触发2个AutoCompleteTextView中的哪一个。

调用此声明

supplierTextView.setOnClickListener(listener);

productTextView.setOnClickListener(listener);

并在onClick()

public void onClick(View view)
{


 if(view == supplierTextView)
    {
            Log.d("Supplier Name selected", supName);
    }
    else if(view == productTextView)
    {
            Log.d("Product Name selected", proName);
    }

}

不要忘记实现View.OnClickListener

答案 2 :(得分:0)

如果要将click事件提供给自动完成视图,请将setOnItemClickListener更改为setOnClickListener。在onClick方法中放入if else条件。它会起作用