package ua.kpi.ecampus.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import ua.kpi.ecampus.model.Recipient;
import java.util.ArrayList;
import java.util.List;
/**
* Manage loading and storage complements.
* Implements Filterable interface to capture user input AutoCompleteTextView
* and pass it as a search term into a web service.
*
* Created by Administrator on 25.02.2016.
*/
public class RecipientAutoCompleteAdapter extends BaseAdapter implements Filterable {
private static final int MAX_RESULTS = 20;
private final Context mContext;
private List<Recipient> mResults;
public RecipientAutoCompleteAdapter(Context context) {
mContext = context;
mResults = new ArrayList<Recipient>();
}
@Override
public int getCount() {
return mResults.size();
}
@Override
public Recipient getItem(int index) {
return mResults.get(index);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
}
Recipient recipient = getItem(position);
((TextView) convertView.findViewById(android.R.id.text1)).setText("Filter");
return convertView;
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
List<Recipient> recipients = findRecipients(constraint.toString());
// Assign the data to the FilterResults
filterResults.values = recipients;
filterResults.count = recipients.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, Filter.FilterResults results) {
if (results != null && results.count > 0) {
mResults = (List<Recipient>) results.values;
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}};
return filter;
}
/**
* Returns a search result for the given profile.
*/
private List<Recipient> findRecipients(String profile) {
//return service.findRecipient(profile);
return null;
}
}