Java Android Autocomplete无法正常工作,这是怎么回事。。!

Java Android Autocomplete无法正常工作,这是怎么回事。。!,java,android,autocomplete,android-arrayadapter,custom-adapter,Java,Android,Autocomplete,Android Arrayadapter,Custom Adapter,我有这个Autocomplete类,我正在修改适配器,这样,它将在显示的文本前面显示一个图标,而不仅仅是文本。所有可用的选项都存储在字符串数组中 现在,出于某种原因,无论我键入什么,它只显示5项 public class AutoCompleteText extends Activity{ public class CustomAdapter extends ArrayAdapter<String>{ public CustomAdapter(Context contex

我有这个Autocomplete类,我正在修改适配器,这样,它将在显示的文本前面显示一个图标,而不仅仅是文本。所有可用的选项都存储在字符串数组中

现在,出于某种原因,无论我键入什么,它只显示5项

public class AutoCompleteText extends Activity{

public class CustomAdapter extends ArrayAdapter<String>{

    public CustomAdapter(Context context, int textViewResourceId,String[] objects) {
        super(context, textViewResourceId, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater();
        View row = inflater.inflate(R.layout.arow,parent, false);
        TextView label = (TextView) row.findViewById(R.id.element);
        label.setText(listItems[position]);
        ImageView icon = (ImageView) row.findViewById(R.id.image);

        if("Item1".equals(listItems[position])|| something else || something else){
            icon.setImageResource(R.drawable.img1);
        }
        else if("Item2".equals(listItems[position])|| something else || something else){
            icon.setImageResource(R.drawable.img2);
        }
        else if("Item3".equals(listItems[position])|| something else || something else){
            icon.setImageResource(R.drawable.img3);
        }
        else if("Item4".equals(listItems[position])|| something else || something else){
            icon.setImageResource(R.drawable.img4);
        }
        else if("Item5".equals(listItems[position])|| something else || something else){
            icon.setImageResource(R.drawable.img5);
        }
        else if("Item6".equals(listItems[position])|| something else || something else) {
            icon.setImageResource(R.drawable.img6);
        }
        else{
            icon.setImageResource(R.drawable.whatever);
        }
        return row;
    }
}


AutoCompleteTextView acTextView;
private static String listItems[] = { "Item1", "Item2","Item3","Item4","Item5", "Item6", "Item7", "Item8", "Item9", "Item10"
                                        "Item11", "Item12","Item13","Item14","Item15", "Item16", "Item17", "Item18", "Item19", "Item20");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    acTextView = (AutoCompleteTextView)findViewById(R.id.searchfield);
    acTextView.setThreshold(1);
    acTextView.setAdapter(new CustomAdapter(AutoCompleteText.this,R.layout.arow, listItems));
    acTextView.setOnItemClickListener(new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                try {
                    //random staff
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
            } 
        }

    );
}   
公共类自动完成文本扩展活动{
公共类CustomAdapter扩展了ArrayAdapter{
公共CustomAdapter(上下文上下文,int textViewResourceId,字符串[]对象){
超级(上下文、textViewResourceId、对象);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气机=getLayoutInflater();
视图行=充气机。充气(R.layout.arow,父级,false);
TextView标签=(TextView)row.findViewById(R.id.element);
label.setText(列表项[位置]);
ImageView图标=(ImageView)row.findViewById(R.id.image);
if(“Item1”.equals(列表项[位置])| | | | | |其他东西){
icon.setImageResource(R.drawable.img1);
}
else if(“Item2.”等于(列表项[位置]| | | | | |其他东西){
icon.setImageResource(R.drawable.img2);
}
else if(“Item3.”等于(列表项[位置]| | | | | |其他东西){
icon.setImageResource(R.drawable.img3);
}
else if(“Item4.”等于(列表项[位置])| | | | | |其他东西){
icon.setImageResource(R.drawable.img4);
}
else if(“Item5.”等于(listItems[位置])| | | | | |其他东西){
icon.setImageResource(R.drawable.img5);
}
else if(“Item6.”等于(列表项[位置]| | | | | |其他东西){
icon.setImageResource(R.drawable.img6);
}
否则{
icon.setImageResource(R.drawable.whatever);
}
返回行;
}
}
自动完成文本视图acTextView;
私有静态字符串listItems[]={“Item1”、“Item2”、“Item3”、“Item4”、“Item5”、“Item6”、“Item7”、“Item8”、“Item9”、“Item10”
“第11项”、“第12项”、“第13项”、“第14项”、“第15项”、“第16项”、“第17项”、“第18项”、“第19项”、“第20项”);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
acTextView=(AutoCompleteTextView)findViewById(R.id.searchfield);
acTextView.setThreshold(1);
setAdapter(新的CustomAdapter(AutoCompleteText.this,R.layout.arow,listItems));
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
试一试{
//随机工作人员
}catch(classnotfounde异常){
e、 printStackTrace();
}
} 
}
);
}   
}

该应用程序编译和运行良好,没有任何错误。有人能帮我吗?
谢谢。

不要将
字符串
=
进行比较,因为这样会检查它是否是同一对象而不是同一文本。请改用
.equals

if ("Item6".equals(listItems[position]) { 
它可能在您的情况下工作,因为编译器可能足够聪明,可以使用相同的对象来表示文本,但这通常不是一个好主意


另外,您的代码中只有5个(+默认值)项。您看到了吗?

Added.equals(listItems[位置])到所有字符串检查,但仍然不起作用。我只能看到选定的元素,例如Item1、Item2、Item4、Item5。谢谢你,你到底看到了什么?一个包含20个项目的列表,显示了错误的图标或文本,还是只包含了5个项目?我看到了数组的前7个元素。它们的图标是正确的。我在其他类中使用这个自定义适配器类它工作正常…可能是布局问题,例如,不够?因为无论我在自动完成中输入什么,它都会显示这些值..我不明白..如果我输入ArrayAdapter=new ArrayAdapter(这个,R.layout.list_项,国家);textView.setAdapter(适配器);工作正常!!但是如果我修改了适配器,那么它就不工作了