I have a list view, when I go back and come back to my list activity the list is duplicated. The first list needs to be removed so only one list is displayed. Any ideas???
This is my List Activity code:
package com.sportspubfinder;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class ListPubsActivity extends Activity {
ProgressDialog ShowProgress;
ListView lv1;
int selectedRadius;
Double userLat;
Double userLong;
public static ArrayList<SetterGetter> PubList = new ArrayList<SetterGetter>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pubslist);
lv1 = (ListView) findViewById(R.id.listView1);
Bundle extras = getIntent().getExtras();
if(extras != null){
//retrieve the passed through radius and location readings
selectedRadius = extras.getInt("radius_set");
userLat = extras.getDouble("latitude_set");
userLong = extras.getDouble("longitude_set");
}
//show progres bar whilst a connection is made with the url
ShowProgress = ProgressDialog.show(ListPubsActivity.this, "",
"Loading Pubs. Please wait...", true);
/* --If the INAPUB api was implemented, the url would take the passed radius (selectRadius) and location of the user---
* "http://api.inapub.co.uk/venues/geocode/"+userLat+"/"+userLong+"/"+selectedRadius+"/?API_Key=7xa3tdmjkhu6jwjvp746zgg4");*/
new loadingTask().execute("http://itsuite.it.brighton.ac.uk/jp232/pubs.php");
//check which list item has been selected
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(ListPubsActivity.this, PubActivity.class);
//pass the pubs information through to the next activity
intent.putExtra("pubName", PubList.get(position).getName());
intent.putExtra("pubImage", PubList.get(position).getThumbnail());
intent.putExtra("pubAddress", PubList.get(position).getAddress());
intent.putExtra("pubTown", PubList.get(position).getTown());
intent.putExtra("pubCounty", PubList.get(position).getCounty());
intent.putExtra("pubDescription", PubList.get(position).getDescription());
intent.putExtra("pubFacilities", PubList.get(position).getFacilities());
intent.putExtra("pubRating", PubList.get(position).getRating());
intent.putExtra("pubLatitude", PubList.get(position).getLatitude());
intent.putExtra("pubLongitude", PubList.get(position).getLongitude());
startActivity(intent);
}
});
}
class loadingTask extends AsyncTask<String, Void, String> {
//check if there's an Internet connection
/*public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null &&
cm.getActiveNetworkInfo().isConnectedOrConnecting();
}*/
protected String doInBackground(String... urls) {
//in background wait to receive the information from the ListHandler
SAXHelper sh = null;
try {
sh = new SAXHelper(urls[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
}
sh.parseContent("");
return "";
}
protected void onPostExecute(String s) {
//add Custom List Adapter once ListHandler has been received
lv1.setAdapter(new CustomAdapter(ListPubsActivity.this, PubList));
//stop progress bar
ShowProgress.dismiss();
}
}
class SAXHelper {
public HashMap<String, String> userList = new HashMap<String, String>();
private URL url2;
public SAXHelper(String url1) throws MalformedURLException {
this.url2 = new URL(url1);
}
public ListHandler parseContent(String parseContent) {
//add the ListHandler
ListHandler df = new ListHandler();
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(df);
xr.parse(new InputSource(url2.openStream()));
} catch (Exception e) {
e.printStackTrace();
}
return df;
}
}
@Override
protected void onPause(){
super.onPause();
}
@Override
protected void onStop(){
super.onStop();
}
}
I believe, due to the static type, your list contents are getting appended.