Java 在android中使用自定义适配器而不是正确的起始位置时,从MultiAutoCompleteTextView的起始位置获取项目?
我已经为MultiAutoCompleteTextView创建了一个自定义适配器,它为我提供了列表视图的视图。问题是,每当我键入任何字符时,它都会给出正确的计数,但索引从0开始,因此我会看到错误的名称Java 在android中使用自定义适配器而不是正确的起始位置时,从MultiAutoCompleteTextView的起始位置获取项目?,java,android,android-edittext,autofill,multiautocompletetextview,Java,Android,Android Edittext,Autofill,Multiautocompletetextview,我已经为MultiAutoCompleteTextView创建了一个自定义适配器,它为我提供了列表视图的视图。问题是,每当我键入任何字符时,它都会给出正确的计数,但索引从0开始,因此我会看到错误的名称 String[] personsList = {"Rahul", "Mike", "Mantu","Mathew", "Gatr", "Ahamad"}; AutoCompleteNameAdaptor autoCompleteAdaptor = new AutoCompleteN
String[] personsList = {"Rahul", "Mike", "Mantu","Mathew", "Gatr", "Ahamad"};
AutoCompleteNameAdaptor autoCompleteAdaptor = new AutoCompleteNameAdaptor(getApplicationContext(), personsList);
CustomMultiAutoCompleteTextView personName = (CustomMultiAutoCompleteTextView) findViewById(R.id.allPeopleInvolved);
personName.setThreshold(1);
personName.setAdapter(autoCompleteAdaptor);
personName.setTokenizer(new CustomMultiAutoCompleteTextView.CommaTokenizer());
当列表视图打开时,它总是显示从Rahul开始的列表项,即使我键入m,但计数仍然为3,因此3项从项目0开始
这在android arrayAdaptor中运行良好,它是:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, personsList);
我是否应该调试以了解它为什么不能在适配器的getView函数中传递正确的索引,或者我是否需要设置一些排序算法来对列表进行排序并在适配器中再次更新它,如果是,在哪里
自定义适配器代码
public class AutoCompleteNameAdaptor extends ArrayAdapter<String> {
LayoutInflater inflater;
String[] listItems;
public AutoCompleteNameAdaptor(Context context, String[] objects) {
super(context, R.layout.people_involved_autocomplete_list, objects);
this.listItems = objects;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
GenericItemViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.people_involved_autocomplete_list, parent, false);
holder = new GenericItemViewHolder();
holder.personNameLabel = (TextView) convertView.findViewById(R.id.personName);
holder.personNameLabel.setText(this.listItems[position]);
convertView.setTag(holder);
} else {
holder = (GenericItemViewHolder)convertView.getTag();
}
return convertView;
}
@Override
public String getItem(int position) {
return this.listItems[position];
}
public static class GenericItemViewHolder {
public TextView personNameLabel;
public ImageView personNameImage;
}
}应用了我自己的自定义过滤器
@Override
public Filter getFilter() {
if (filter == null)
filter = new AutoCompleteFilter(listItems);
return filter;
}
在函数performFiltering中添加了我自己的逻辑
另外,在getView函数中,如果convertView==null是不需要的,因为如果我们只检查null并显示position元素是否存在,它将始终显示缓存的值