Android: Actualisation de la ListView dans la première activité sur le retour à partir de la deuxième activité

J'ai un problème avec le rafraîchissement de la liste lorsque l'utilisateur ferme une activité et renvoie au précédent. Je vois que le problème est très commun, mais je ne peux pas le résoudre.

J'ai remplacé méthode onResume:

@Override
public void onResume() {
    super.onResume();
    populateList();
}

populateList() est une méthode où je remplir listView avec la liste des Chaînes:

arrayAdapter = new CustomArrayAdapter(this, R.layout.symbol_item,list);
listView.setAdapter(arrayAdapter);

Le problème est que lors de la deuxième activité est fermé, de nouveaux éléments sont ajoutés à nouveau dans la liste donc j'ai toute la a doublé. Comme il n'est pas actualisé.

Si j'ai mis notifyDataSetChanged() dans onResume() me jette nullPointerException parce que lorsque l'activité est démarré première fois carte n'est pas initialisé lorsque l'activité est la première fois commencé.

Je ne suis pas sûr de savoir comment gérer cela.

public class testActivity extends Activity {


    private int id=1;
    private ListView listView;
    private CustomArrayAdapter arrayAdapter;
    private ArrayList<String> list = new ArrayList<String>();
    ArrayList<Item> objectList = new ArrayList<Item>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

    }

    @Override
    public void onResume() {
        super.onResume();
        populateList();
    }

    private void populateList() {
        try {
            objectList = new GetAsyncTask(id).execute();
        } catch (InterruptedException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TimeoutException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }

        int size = objectList.size();
        String name;

        for (int i = 0; i < size; i++) {
            name = objectList.get(i).getName();
            list.add(name);
        }

        arrayAdapter = new CustomArrayAdapter(this, R.layout.symbol_item,
                list);
        listView.setAdapter(arrayAdapter);
    }
}
Gardez un membre de la variable qui contrôle si le ListView déjà contenir des chaînes de caractères. Si oui, n'appelez pas populateList().
Le problème, c'est avec list, comment êtes-vous de peupler ce?
Mais j'ai besoin d'appeler populateList (), même si ListView contient des chaînes de caractères. Je vais essayer de l'actualiser. Je ne sais pas si je vous ai compris.
Ah, désolé, j'ai mal compris. Je voudrais effacer l'adaptateur, puis ajouter les chaînes à nouveau.
J'attrape le list_of_files à partir de l'appareil et de le mettre dans une liste populateList(). J'applique ensuite de l'adaptateur. Sur le retour qui liste sur le périphérique est modifiée de sorte à nouveau fait la même chose et le mettre dans une liste. Le problème est dans la ListView il y a encore des éléments anciens et de nouveaux éléments sont ajoutés à la fin. Il est donc double.

OriginalL'auteur Cristiano | 2013-01-09