2012-06-06 2 views
0

У меня есть вид списка, когда я возвращаюсь и возвращаюсь к своей деятельности, список дублируется. Первый список нужно удалить, чтобы отобразился только один список. Есть идеи???android - удалять элементы списка списка перед перестройкой списка списка

Это мой список код активности:

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(); 
    } 

} 
+0

укажите код, в котором PubList заселен ......... –

+0

В 'onItemClick()' вы можете добавить ссылку переменной: 'GetterSetter current = PubList.get (position);' , Это позволит вам повторить поиск в том же элементе списка. – Sam

ответ

1
 
public static ArrayList PubList = new ArrayList(); 

Я считаю, что из-за статический тип, список вашего содержания получения прилагается.

+0

Есть ли другой способ обойти это, не удаляя статический тип? –

+0

Вы можете попробовать очистить список в методе onCreate. Это позволит убедиться, что список пуст, когда вы открываете действие. –

+0

Я пытаюсь добиться этого без преувеличения. Какой код вы используете для очистки списка? спасибо за вашу помощь –

Смежные вопросы