2016-07-29 5 views
0

私はJsonアーリーリストを持っています。ここでは、このオートコンプリート・テキスト・ビューでアダプタ・ファイルをすでに設定しています。私のコードからAndroidのオートコンプリートテキストビューの提案は2つのフィールドから表示されます

私はUSERなどのラッパークラスを使用していました。このクラス3のフィールドには(userid, username and designation)があります。

ここで私はいくつかのテキストを書く必要があるということは、ユーザー名と指定の提案を表示する必要があることを意味します。

でどうすればいいですか?

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

ここでは、アレイに表示されている提案を示します。しかし、私は文字列のような提案を表示する必要があります。 EG用

: "T" の手段はどのように

test 
test1 
TE 

のような提案を与える必要があるよう

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

のような値は、現在のボックスにキーワードを入力していた

のUserList僕にできる ?これを実装するためのアイデアを教えてください。

+0

あなたの値(test、test1など)を 'Array'に追加してください。 'ArrayAdapter'を作ります。その後、 'AutoCompleteTextView'にアダプタを追加します。 –

+0

[this](http://stackoverflow.com/a/19860624/2252830)の回答 – pskink

答えて

0

カスタムアダプターを作成し、そのアダプターでカスタムフィルターを使用します。 以下のコードではSearchSuggestionが私のモデルです。 performFiltering()メソッドでモデルを変更し、検索条件を変更することができます。お役に立てれば!

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

ユーザー名と、ドロップダウンでの提案として指定は、その後、1配列内のすべてのユーザー名および名称を追加し、アダプタに渡したい場合。

関連する問題