2016-07-26 135 views
1

你好,我已经在我的应用程序中实现了Autotextview搜索。 我现在面临的问题是,有时候搜索的字符串之间下面的图片中进行的:Autotextview搜索功能混淆

enter image description here

就像我写的“J”在该领域中显示的值包含‘J’

现在,当我输入“HDF” 我得到以下结果:

enter image description here

正如你可以在最后的VA看略过来是 “HDF - HDFC BANK LTD” 当我键入 'HDF'

现在,当我输入 “HDFC”

我应该得到 “HDF - HDFC BANK LTD”,因为它包含了 “HDFC” 但我得到这个结果:

enter image description here

由于有在列表中,即2个值 “HDF - HDFC BANK LTD” 和 “HDFC银行”。所以“HDFC BANK”显示正确,但为什么我们没有收到“HDF - HDFC BANK LTD”。为什么?

+0

张贴您的xml文件 –

+0

您是在做过滤还是仅向autocompletetextview提供字符串? –

+0

只是应用字符串。 –

回答

0

自定义适配器是这样的:

这里List<SearchSuggestion> suggestionList是我的自定义搜索建议类的列表。您可以使用String来进行相应的更改。

public class SearchSuggestionAdapter extends ArrayAdapter<SearchSuggestion> implements Filterable { 

private Context mContext; 
private List<SearchSuggestion> mSuggestionList; 
private List<SearchSuggestion> mFilteredSuggestionList; 

public SearchSuggestionAdapter(Context context, List<SearchSuggestion> suggestionList) { 
    super(context, -1); 
    mContext = context; 
    mSuggestionList = suggestionList; 
    mFilteredSuggestionList = mSuggestionList; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder; 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.suggestion_item, null); 
     viewHolder = new ViewHolder(); 
     viewHolder.mSuggestionTextView = (TextView) convertView.findViewById(R.id.suggestion_text); 
     viewHolder.mSuggestionImage = (ImageView) convertView.findViewById(R.id.suggestion_image); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    SearchSuggestion searchSuggestion = mFilteredSuggestionList.get(position); 
    viewHolder.mSuggestionTextView.setText(searchSuggestion.getName()); 
    viewHolder.mSuggestionImage.setImageResource(searchSuggestion.isTag() ? R.drawable.suggestion_tag_icon : R.drawable.suggestion_project_icon); 
    return convertView; 
} 

public static class ViewHolder { 
    private ImageView mSuggestionImage; 
    private TextView mSuggestionTextView; 
} 

@Override 
public int getCount() { 
    return mFilteredSuggestionList.size(); 
} 

@Override 
public SearchSuggestion getItem(int position) { 
    return mFilteredSuggestionList.get(position); 
} 

@Override 
public Filter getFilter() { 
    return new Filter() { 
     @Override 
     protected FilterResults performFiltering(CharSequence constraint) { 
      final FilterResults results = new FilterResults(); 
      if (constraint != null && constraint.length() > 0) { 
       constraint = constraint.toString().toLowerCase(); 
       List<SearchSuggestion> tempFilteredList = new ArrayList<>(); 
       for (SearchSuggestion suggestion : mSuggestionList) { 
        String name = suggestion.getName(); 
        if (name != null && name.toLowerCase().contains(constraint)) { 
         tempFilteredList.add(suggestion); 
        } 
       } 
       results.values = tempFilteredList; 
       results.count = tempFilteredList.size(); 
      } else { 
       results.values = mSuggestionList; 
       results.count = mSuggestionList.size(); 
      } 
      return results; 
     } 

     @SuppressWarnings("unchecked") 
     @Override 
     protected void publishResults(CharSequence constraint, FilterResults results) { 
      if (results.values != null) { 
       mFilteredSuggestionList = (ArrayList<SearchSuggestion>) results.values; 
       notifyDataSetChanged(); 
      } 
     } 
    }; 
} 
} 
+0

谢谢你的帮助。我会试试这个。但你可以弄清楚这是什么问题? –

+0

不知道内部发生了什么,可能是字符串比较问题。自定义适配器像魅力一样工作。希望这可以帮助。 –