1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. jowieweb, 06.02.2012 #1
    jowieweb

    jowieweb Threadstarter Neuer Benutzer

    Hallo

    ich stehe vor einem (hoffentlich) kleinem Problem. Ich habe einen custom arrayadapter der ein listview "befüllt". Der Adapter hat für jedes Item 3 Spalten ( 3 TextViews).
    Das alles wird aus einem TabWidget, welches 3 Tabs (day1, day2 und day3) hat, herraus gestartet.
    Jeder der Tabs hat eine solche Listview mit oben beschriebenen Adapter.
    Das Anzeigen und befüllen klappt auch alles ganz gut. Jedoch weiß ich nicht wie ich den Adapter und die Listen wieder leer bekomme.

    Habe schon ein wenig herum gegoogelt und festgestellt das es eig. mit
    PHP:
            alldata = new String[0];
            
    myAdapter adapter= (myAdapterlist1.getAdapter();
            
    adapter.notifyDataSetChanged();
    gehen sollte, wobei alldata die als parameter übergebenen Daten sind.
    Leider ändert das nix. Es werden immer noch die "grade auf 0 gesetzten" Strings angezeigt.
    Ich habe leider nichts dazu gefunden was die notifyDataSetChanged Methode machen soll. Deshalb sieht sie bei mir grade so aus :
    PHP:
        @Override
        
    public void notifyDataSetChanged() {
            
    // TODO Auto-generated method stub
            
    super.notifyDataSetChanged();
        }
    Habe auch
    PHP:
            data = new String[0];
            
    alldata = new String[0];
            
    myAdapter bums = (myAdapterlist1.getAdapter();
            
    bums.clear();
            
    bums.notifyDataSetChanged();
            
    list1.setAdapter(bums);
    versucht. Leider führ das .clear() hier zu "java.lang.UnsupportedOperationException", wobei der adapter bei clear auch nur
    PHP:
        public void clear() {
            
    // TODO Auto-generated method stub
            
    super.clear();
        }
    aufruft.



    Ich hoffe ihr könnt mir helfen :)
     
  2. the_alien, 06.02.2012 #2
    the_alien

    the_alien Android-Lexikon

    Wenn du den folgenden Code ausserhalb deines Adapters aufrufst geht das natürlich nicht. Das liegt daran, dass dem Adapter eine Kopie Referenz aufs Array übergeben wurde.
    PHP:
            alldata = new String[0];
            
    myAdapter adapter= (myAdapterlist1.getAdapter();
            
    adapter.notifyDataSetChanged();
    Wenn es doch dein Adapter ist (übrigens fangen Klassen laut Konvention immer mit einem Großbuchstaben an), dann implementiere clear() selber. Setze das Array zurück in der Methode und rufe dann notifyDataSetChanged() auf.
     
  3. jowieweb, 06.02.2012 #3
    jowieweb

    jowieweb Threadstarter Neuer Benutzer

    grrr... da hätte ich auch selber drauf kommen können :D
    Vielen Dank, geht :)
     

Diese Seite empfehlen