Android ListView OnScrollListener Clears old data
===

I have created a listview using LazyAdapter.

When i scroll to the bottom of the list the new data show up but it clears all the old data.

How i can append the new data below old data?


This is my main activity code


        
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import org.w3c.dom.NodeList;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.sax.Element;
    import android.view.View;
    import android.widget.AbsListView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    import android.widget.TextView;
    
    public class AndroidJSONParsingActivity extends Activity {
    
    	// url to make request
    	
    	
    	// JSON Node names
    	static final String TAG_CONTACTS = "comics";
    	static final String TAG_ID = "id";
    	static final String TAG_NAME = "title";
    	static final String TAG_EMAIL = "id";
    	static final String TAG_PHONE_MOBILE = "image";
    
    	// contacts JSONArray
    	JSONArray contacts = null;
    	ListView list;
        LazyAdapter adapter;
        static int counter = 0;
        
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		
    		 	            // call the function
    	            LoadData();
    		
    				
    		
    
    	}
    
    	public void LoadData(){
    		String url = "http://myurl.com/?start=" + counter;
    		// Hashmap for ListView
    				ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
    
    				// Creating JSON Parser instance
    				JSONParser jParser = new JSONParser();
    
    				// getting JSON string from URL
    				JSONObject json = jParser.getJSONFromUrl(url);
    
    				try {
    					// Getting Array of Contacts
    					contacts = json.getJSONArray(TAG_CONTACTS);
    					
    					// looping through All Contacts
    					for(int i = 0; i < contacts.length(); i++){
    						JSONObject c = contacts.getJSONObject(i);
    						
    						// Storing each json item in variable
    						String id = c.getString(TAG_ID);
    						String name = c.getString(TAG_NAME);
    						String email = c.getString(TAG_EMAIL);
    						String mobile = c.getString(TAG_PHONE_MOBILE);
    						// Phone number is agin JSON Object
    						
    						// creating new HashMap
    						HashMap<String, String> map = new HashMap<String, String>();
    						
    						// adding each child node to HashMap key => value
    						map.put(TAG_ID, id);
    						map.put(TAG_NAME, name);
    						map.put(TAG_EMAIL, email);
    						map.put(TAG_PHONE_MOBILE, mobile);
    
    						// adding HashList to ArrayList
    						contactList.add(map);
    					}
    				} catch (JSONException e) {
    					e.printStackTrace();
    				}
    				
    				
    				/**
    				 * Updating parsed JSON data into ListView
    				 * */
    		list=(ListView)findViewById(R.id.list);
    				
    				// Getting adapter by passing xml data ArrayList
    		        adapter=new LazyAdapter(this, contactList);        
    		        list.setAdapter(adapter);
    
    				// Launching new screen on Selecting Single ListItem
    		        list.setOnItemClickListener(new OnItemClickListener() {
    
    					@Override
    					public void onItemClick(AdapterView<?> parent, View view,
    							int position, long id) {
    						// getting values from selected ListItem
    						String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
    						String cost = ((TextView) view.findViewById(R.id.email)).getText().toString();
    						String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString();
    						
    						// Starting new intent
    						Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
    						in.putExtra(TAG_NAME, name);
    						in.putExtra(TAG_EMAIL, cost);
    						in.putExtra(TAG_PHONE_MOBILE, description);
    						startActivity(in);
    
    					}
    				});
    		        
    		        		        
    		        list.setOnScrollListener(new OnScrollListener() {
    
    		          
    		        	
    		            @Override
    		            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    		                if (view.getAdapter() != null && ((firstVisibleItem + visibleItemCount) >= totalItemCount)) {
    		                    //Log.v(TAG, "onListEnd, extending list");
    		                    //mPrevTotalItemCount = totalItemCount;
    		                    counter = totalItemCount;
    
    		                    LoadData();
    		                    adapter.notifyDataSetChanged();}
    		            }
    		            
    		            @Override
    		            public void onScrollStateChanged(AbsListView view, int scrollState) {
    		            }
    
    		        });
    
    		        
    		        
    		     
    		        
    	}
    }



And this is my LazyAdapter.java file


    
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import android.app.Activity;
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class LazyAdapter extends BaseAdapter {
        
        private Activity activity;
        private ArrayList<HashMap<String, String>> data;
        
        private static LayoutInflater inflater=null;
        public ImageLoader imageLoader; 
        
        
        
        public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
            activity = a;
            data=d;
            inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            imageLoader=new ImageLoader(activity.getApplicationContext());
        }
    
        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.title); // title
            TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name
            TextView duration = (TextView)vi.findViewById(R.id.duration); // 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(AndroidJSONParsingActivity.TAG_NAME));
            artist.setText(song.get(AndroidJSONParsingActivity.TAG_ID));
            duration.setText(song.get(AndroidJSONParsingActivity.TAG_EMAIL));
            imageLoader.DisplayImage(song.get(AndroidJSONParsingActivity.TAG_PHONE_MOBILE), thumb_image);
            return vi;
        }
    }