0
Я хочу иметь знак в особенности же, как приложение к LinkedIn, где если пользователь вводит в его электронный идентификатор, он должен получить некоторые общие предложения. Если пользователь имеет тип
'[email protected]'
, то он должен получить список предложений, как
[email protected]
[email protected]
[email protected]
[email protected]
внушения должны быть отображены только после ввода «@».
MainActivity
autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.text);
str = autoCompleteTextView.getText().toString();
indexOfAt = str.indexOf("@");
ObjectAdapter adapter = new ObjectAdapter(MainActivity.this, searchArrayList);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(indexOfAt);
адаптер
public class ObjectAdapter extends BaseAdapter implements Filterable {
private Context context;
private ArrayList<String> originalList;
private ArrayList<String> suggestions = new ArrayList<>();
private Filter filter = new CustomFilter();
/**
* @param context Context
* @param originalList Original list used to compare in constraints.
*/
public ObjectAdapter(Context context, ArrayList<String> originalList) {
this.context = context;
this.originalList = originalList;
}
@Override
public int getCount() {
return suggestions.size(); // Return the size of the suggestions list.
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
/**
* This is where you inflate the layout and also where you set what you want to display.
* Here we also implement a View Holder in order to recycle the views.
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.adapter_autotext,
parent,
false);
holder = new ViewHolder();
holder.autoText = (TextView) convertView.findViewById(R.id.autoText);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.autoText.setText(suggestions.get(position));
return convertView;
}
@Override
public Filter getFilter() {
return filter;
}
private static class ViewHolder {
TextView autoText;
}
/**
* Our Custom Filter Class.
*/
private class CustomFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
suggestions.clear();
if (originalList != null && constraint != null) { // Check if the Original List and Constraint aren't null.
for (int i = 0; i < originalList.size(); i++) {
if (originalList.get(i).toLowerCase().contains(constraint)) { // Compare item in original list if it contains constraints.
suggestions.add(originalList.get(i)); // If TRUE add item in Suggestions.
}
}
}
FilterResults results = new FilterResults(); // Create new Filter Results and return this to publishResults;
results.values = suggestions;
results.count = suggestions.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}
http://stackoverflow.com/q/6618409/2900127 – 7geeky