Skip to content Skip to sidebar Skip to footer

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

publicclassContactListAdapterextendsBaseAdapterimplementsFilterable

and 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"