有一种简单的方法吗? 因为带有一个与键入文本相同的元素的下拉列表看起来是多余的。
我的适配器很简单,这是代码
AutoCompleteTextView autoCompleteTextViewAddress;
...
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AvatarMainActivity.this, android.R.layout.simple_list_item_1, emailsSet.toEmailStringSet());
autoCompleteTextViewAddress.setAdapter(adapter);
emailsSet.toEmailStringSet()
返回字符串集。
当我使用与字符串集中的电子邮件相同的电子邮件填充autoCompleteTextViewAddress
时,我仍然可以查看包含一个元素的下拉列表。
答案 0 :(得分:1)
丑陋的解决方案,但它确实有效:
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;
}
}
使用自定义类而不是原始AutoCompleteTextView
。
当我们的适配器中只有一个匹配记录时,覆盖enoughToFilter
函数隐藏下拉列表
答案 1 :(得分:0)
取决于代码类型
但这是一个抓住建议的SQL示例
If( (select count(*) from /* your code here */) > 1)
Select /* field */ from /* your code again here */
这样只会在有2个或更多建议时显示。