Custom Listview Not Refreshed On Fragment Back
I have one custom list view adapter loading contact list. When I open app, contacts are loading perfectly , but once I came back after scrolling to Preference Fragment, listview is
Solution 1:
implements Filterable in BaseAdapter
publicclassContactListAdapterextendsBaseAdapterimplementsFilterableand add value :
privateFilterfilter=newCustomFilter();
and create class in your baseAdapter:
privateclassCustomFilterextendsFilter {
@Overrideprotected FilterResults performFiltering(CharSequence constraint) {
_data.clear();
if (arraylist != null && constraint != null) {
for (inti=0; i < arraylist.size(); i++) {
if (arraylist.get(i).toString().toLowerCase().contains(constraint)) {
_data.add(arraylist.get(i));
}
}
}
FilterResultsresults=newFilterResults();
results.values = _data;
results.count = _data.size();
return results;
}
@OverrideprotectedvoidpublishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
add in your baseAdapter class:
@OverridepublicFiltergetFilter() {
return filter;
}
my adapter for example:
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 java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
publicclassCustomArrayAdapterextendsBaseAdapterimplementsFilterable{
private LayoutInflater mInflater;
privatefinal Context context;
private List<String> mItems;
privateFilterfilter=newCustomFilter();
private ArrayList<String>mItemsSuggestion = newArrayList<String>();
publicCustomArrayAdapter(Context context, String[] values) {
this.context = context;
mItems = Arrays.asList(values);
}
@OverridepublicintgetCount() {
return mItemsSuggestion.size();
}
@Overridepublic Object getItem(int position) {
return mItemsSuggestion.get(position);
}
@OverridepubliclonggetItemId(int position) {
return position;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewoneView= mInflater.inflate(R.layout.towar_list, parent, false);
TextViewtext= (TextView)oneView.findViewById(R.id.towaryAllList);
text.setText(mItemsSuggestion.get(position).toString());
return oneView;
}
@Overridepublic Filter getFilter() {
return filter;
}
privateclassCustomFilterextendsFilter {
@Overrideprotected FilterResults performFiltering(CharSequence constraint) {
mItemsSuggestion.clear();
if (mItems != null && constraint != null) {
for (inti=0; i < mItems.size(); i++) {
if (mItems.get(i).toString().toLowerCase().contains(constraint)) {
mItemsSuggestion.add(mItems.get(i));
}
}
}
FilterResultsresults=newFilterResults();
results.values = mItemsSuggestion;
results.count = mItemsSuggestion.size();
return results;
}
@OverrideprotectedvoidpublishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}
Solution 2:
I solved it now. The issue was only placing search view code in radiocontact on click listeners instead of in createview method directly.
Post a Comment for "Custom Listview Not Refreshed On Fragment Back"