Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AutoCompleteTextView-过滤后有一个精确匹配项时,如何禁用下拉列表?_Android_Android Layout - Fatal编程技术网

Android AutoCompleteTextView-过滤后有一个精确匹配项时,如何禁用下拉列表?

Android AutoCompleteTextView-过滤后有一个精确匹配项时,如何禁用下拉列表?,android,android-layout,Android,Android Layout,有没有一个简单的方法? 因为只有一个元素与键入的文本相同的下拉列表看起来是多余的 我的适配器很简单,下面是代码 AutoCompleteTextView autoCompleteTextViewAddress; ... ArrayAdapter<String> adapter = new ArrayAdapter<String>(AvatarMainActivity.this, android.R.layout.simple_list_item_1, emails

有没有一个简单的方法? 因为只有一个元素与键入的文本相同的下拉列表看起来是多余的

我的适配器很简单,下面是代码

AutoCompleteTextView autoCompleteTextViewAddress;
...
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(AvatarMainActivity.this, android.R.layout.simple_list_item_1, emailsSet.toEmailStringSet());
    autoCompleteTextViewAddress.setAdapter(adapter);
AutoCompleteTextView AutoCompleteTextView地址;
...
ArrayAdapter=新的ArrayAdapter(AvatarMainActivity.this,android.R.layout.simple_list_item_1,emailsSet.toEmailStringSet());
autoCompleteTextViewAddress.setAdapter(适配器);
emailsSet.toEmailStringSet()
返回字符串集


当我使用与字符串集中的电子邮件相同的电子邮件填充
autoCompleteTextViewAddress
时,我仍然可以查看包含一个元素的下拉列表。

取决于代码的类型

但这里有一个获取建议的SQL示例

     If( (select count(*) from /* your code here */) > 1)
     Select /* field */ from /* your code again here */

这样,只有当它有2个或更多建议时才会显示。

丑陋的解决方案,但它可以:

public class CustomAutoCompleteTextView extends AutoCompleteTextView {

    public CustomAutoCompleteTextView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }
    public CustomAutoCompleteTextView(Context context, AttributeSet attrs)
    {
        super(context,attrs);
    }
    public CustomAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle)
    {
        super(context,attrs,defStyle);
    }
    @Override
    public boolean enoughToFilter()
    {
        boolean isEnough=(getThreshold()<=this.getText().length());

        if(isEnough)
        {
            if(this.getAdapter()!=null)
            {
                int itemsCount=0;
                int matchIndex=0;
                String txt = this.getText().toString();
                for (int i=0; i< this.getAdapter().getCount();i++) 
                {
                    String dat = (String)this.getAdapter().getItem(i);
                    if(dat.startsWith(txt))
                    {
                        itemsCount++;
                        matchIndex=i;
                    }
                }
                if(itemsCount == 1)
                {
                     if(((String)getAdapter().getItem(matchIndex)).equals(txt))
                     {
                         isEnough=false;
                     }

                }
            }
        }
        return isEnough;

    }


}
公共类CustomAutoCompleteTextView扩展了AutoCompleteTextView{
公共CustomAutoCompleteTextView(上下文){
超级(上下文);
//TODO自动生成的构造函数存根
}
公共CustomAutoCompleteTextView(上下文上下文、属性集属性)
{
超级(上下文,attrs);
}
公共CustomAutoCompleteTextView(上下文上下文、属性集属性、int-defStyle)
{
超级(上下文、属性、定义样式);
}
@凌驾
公共布尔值enoughToFilter()
{

布尔值isEnough=(getThreshold()可能是这样。如果能看到当前代码的精简版本,会有很大帮助。添加了。这里没有sql,它更简单