2016-07-29 2 views
0

J'ai un arnaqueur Json. Ici déjà défini le fichier de l'adaptateur avec cette vue texte Autocomplete.Android AutocompleteTextview suggestion affiche à partir de 2 champs

De mon code:

J'ai utilisé une classe wrapper comme USER. Dans cette classe 3 champs sont là (userid, username and designation).

ici j'ai besoin d'écrire du texte signifie besoin de montrer les suggestions de nom d'utilisateur et de désignation.Si le mot de frappe correspond à l'un de ces deux champs suggestions doivent afficher.

Comment puis-je faire avec le AutoCompleteTextView.

ArrayAdapter<User> userAdapter = new ArrayAdapter<>(getActivity(), R.layout 
           .spinner_item_text, 
           UserList); 

Maintenant les suggestions affichées dans le tableau. Mais j'ai besoin de montrer la suggestion comme une ficelle.

Pour EG:

UserList ayant les valeurs comme

{ 
    "profile_view": [ 
    { 
username :"test",designation:"SE" 
    }, 
{ 
username :"test1",designation:"TE" 
    }]} 

maintenant je tape le mot-clé dans la boîte comme des moyens "t" besoin de donner les suggestions comme

test 
test1 
TE 

Comment Est-ce que je peux faire ? S'il vous plaît donnez-moi des idées pour mettre en œuvre cela?

+0

ajoutez vos valeurs (test, test1, etc ..) à 'Array'. puis faites 'ArrayAdapter'. après cela, ajoutez l'adaptateur à 'AutoCompleteTextView'. –

+0

voir [this] (http://stackoverflow.com/a/19860624/2252830) answer – pskink

Répondre

0

Ecrivez un adaptateur personnalisé et utilisez un filtrage personnalisé dans cet adaptateur. Dans le code ci-dessous, SearchSuggestion est mon modèle. Vous pouvez modifier le modèle et modifier la condition de recherche dans la méthode performFiltering(). J'espère que cela t'aides!

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

Si vous voulez que votre nom d'utilisateur et les désignations comme une suggestion dans le menu déroulant, puis ajouter tous les noms d'utilisateur et les désignations dans un tableau et passer à l'adaptateur.