我想使用带有自定义下拉列表项的 android 自动完成文本视图(不仅包含字符串)。它以一种特殊的方式工作:它在我的数组列表中找到相应的项目,如果我点击一个项目,正确的字符串将出现在文本框中。但是,下拉菜单没有显示正确的字符串,而是我的数组列表的前 X 个条目(其中 x 是 num_of_results)。示例:arraylist:a,b,c,aa,ab,ac 输入文本:a 我的结果:a,b,c,aa(注意结果的数量是正确的)如果我点击 b,textview 得到 aa(第二个结果)
我猜,我的适配器或我的 customAutoComplete 类有问题。这是我的 CustomAutoCompleteView 类。
public class CustomAutoCompleteView extends AutoCompleteTextView {
public CustomAutoCompleteView(Context context) {
super(context);
}
public CustomAutoCompleteView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomAutoCompleteView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean enoughToFilter() {
return true;
}
protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect)
{
if(focused)
performFiltering("", 0);
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
这是我的列表适配器:
public class ListAdapter extends ArrayAdapter<StopData> {
public ListAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
// TODO Auto-generated constructor stub
}
private List<StopData> stops;
public ListAdapter(Context context, int resource, List<StopData> stops) {
super(context, resource, stops);
this.stops = stops;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.megalloelem, null);
}
StopData p = stops.get(position);
if (p != null) {
TextView stopname = (TextView) v.findViewById(R.id.megallo);
if (stopname != null) {
stopname.setText(p.name);
}
}
return v;
}
getView 函数已经获取了“错误”的索引,因此问题不(仅)存在。任何想法如何从原始数组列表中获取结果的索引?此致, paland3