0

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

addProductButton.setOnClickListener(this);

对于我正在使用的 2 个自动完成小部件

supplierTextView.setOnItemClickListener(this);

现在,当我选择第一个自动完成时,它运行此代码但不进入 if 循环,当我单击第二个自动完成中的一个项目时,它运行相同的代码但不进入 else

@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);

}
4

3 回答 3

0

OnItemClickListener 用于侦听对自动完成文本字段项的点击。

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

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

如果您想对文本字段的文本内容的更改做出反应,您可以使用 TextWatched 侦听器接口。有关这方面的更多信息,请参阅TextView API

于 2012-06-19T05:49:15.357 回答
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

于 2012-06-19T05:52:16.560 回答
0

如果您想将点击事件赋予自动完成视图,则将 setOnItemClickListener 更改为 setOnClickListener。将 if else 条件放在 onClick 方法中。它会工作

于 2012-06-19T06:03:18.093 回答