Question

I would like to remove previous data from arraylist while displaying on autocompletetextview .I tried notifydatasetchanged() but it has to be implemented before the adapter is set .I tried adding it in all the place .I guess I need to add filter.But I don't know how to do it.I really appreciate any help.Thanks in Advance.

BaseAdapter

public class SimpleAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader ;
    Bitmap image;
    private DisplayImageOptions defaultOptions;

    public SimpleAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        defaultOptions = new DisplayImageOptions.Builder().build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(activity)
        .threadPoolSize(2) 
        .memoryCache(new WeakMemoryCache())
        .discCacheFileNameGenerator(new Md5FileNameGenerator())
        .build();

        imageLoader  = ImageLoader.getInstance();

    imageLoader.init(config);

        imageLoader.init(ImageLoaderConfiguration.createDefault(activity));
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_row, null);

        TextView title = (TextView)vi.findViewById(R.id.textView1); // title
        TextView artist = (TextView)vi.findViewById(R.id.textView2); // artist name
        TextView duration = (TextView)vi.findViewById(R.id.textView3); // duration
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image

        HashMap<String, String> song = new HashMap<String, String>();
        song = data.get(position);

        // Setting all values in listview
        title.setText(song.get("firstname"));
        artist.setText(song.get("lastname")); 
        duration.setText(song.get("time"));
        imageLoader.displayImage(song.get("link"), thumb_image, defaultOptions);

        return vi;
    }


}

MainActivity

public class AutoCompleteTextViewActivity extends Activity implements TextWatcher{
    /** Called when the activity is first created. */
    private TextView selection;
    private AutoCompleteTextView actv;


    SimpleAdapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       selection=(TextView)findViewById(R.id.selection);
       actv=(AutoCompleteTextView)findViewById(R.id.actv);
       actv.addTextChangedListener(this);



    }

    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        Suggest Suggestdetails=new Suggest();
        Suggestdetails.execute(); 


    }

    public class Suggest extends AsyncTask<Void, Void, JSONObject> {
        @Override
        protected JSONObject doInBackground(Void... params) {

             String ResponseBody = null;

            try {


                //geoaddress here 

                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://example.com/suggest.php");

                // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);

                nameValuePairs.add(new BasicNameValuePair("name", actv.getText().toString()));


                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);

                BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                sb.append(reader.readLine() + "\n");
                String line = "0";
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                reader.close();
                String result = sb.toString();

                Log.d("Fb tr",result);
                // parsing data
                return new JSONObject(result);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }



        @Override
        protected void onPostExecute(JSONObject result) {




            if (result != null) {
                // do something
//              JSONObject tr = result;

        List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();

            try{
              JSONArray arr=result.getJSONArray("Array");


            for(int i=0;i<arr.length();i++)
            {
                JSONObject e1 = arr.getJSONObject(i);

                JSONObject json= (JSONObject) e1.get("data");

                String firstname = json.getString("firstname").trim();  
                String lastname = json.getString("lastname").trim();
                String link = json.getString("link").trim();
                String time = json.getString("time").trim();


                 HashMap<String, String> hm = new HashMap<String,String>();
                    hm.put("firstname", firstname);
                    hm.put("lastname", lastname );
                    hm.put("link", link);
                    hm.put("time", time);
                    aList.add(hm);

                }


            }catch(Exception e){
                e.printStackTrace();

            }


            String[] from = { "firstname","lastname","time","link"};


            int[] to = { R.id.textView1,R.id.textView2,R.id.textView3,R.id.list_image};

             adapter = new SimpleAdapter(AutoCompleteTextViewActivity.this,aList, R.layout.list_row,from,to);

               actv.setAdapter(adapter);

               adapter.notifyDataSetChanged();


            } else {
                // error occured
            }
        }


    }

}
Was it helpful?

Solution

After execute your AsyncTask clear your ArrayList.

 Suggest Suggestdetails=new Suggest();
 if(aList!=null){

 Suggestdetails.execute(); 
 aList.clear();
 } else{

 listView.setAdapter(adapter);
 adapter.notifyDataSetChanged(); 

 }

OTHER TIPS

Try clearing your aList:

aList.clear();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top