0
我有这个自动完成类,我正在修改适配器,这样,而不是仅仅文本,它会在出现的文本前面显示一个图标。所有可用选项都存储在一个字符串数组中。Android自动完成功能不能正常工作。
现在,由于某种原因,无论我输入什么,它只显示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();
}
}
}
);
}
}
应用程序编译并没有任何错误,运行良好。谁可以帮我这个事? 谢谢。
向所有字符串检查添加了.equals(listItems [position]),但仍然无效。我只能看到选定的元素,例如Item1,Item2,Item4,Item5。谢谢 – 2012-04-15 22:30:16
你究竟看到了什么?包含20个项目的列表,显示错误的图标或文本或仅列出5个项目? – zapl 2012-04-15 22:33:55
我看到阵列的前7个元素。他们的图标是正确的。我在其他类中使用这个自定义适配器类,它工作正常... – 2012-04-15 22:56:08