Autore Topic: cambiare adapter runtime in una listview  (Letto 466 volte)

Offline freefab

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    NEXUS S
  • Play Store ID:
    freefab
  • Sistema operativo:
    OSX 10.7.1
cambiare adapter runtime in una listview
« il: 28 Novembre 2012, 19:45:04 CET »
0
Ciao a tutti,
Non riesco a spiegarmi il comportamento della mia applicazione...
Volvo ottenre come risultato l'aggiornamento di una listview dopo che l'utente seleziona un item senza cambiare Activity
In  parte ottengo il risultato (l'aggiornamento della listview) ma la nuova lista ha il valore dell'ultima riga ripetuta in tutte le righe
Qualcuno sa spiegarmi il perché?
è troppo fantasiosa come implementazione?
grazie

Codice (Java): [Seleziona]
@Override
        public void onCreate ( Bundle savedInstanceState ) {
                super.onCreate( savedInstanceState );
                setContentView( R.layout.linea );
               
                Intent reIntent = getIntent();
                nome_linea = reIntent.getStringExtra("nome_linea");
               
                //Richiamo l'istanza del service DB access
        lineeService =  LineeService.getInstance();
               
         listpartenze = lineeService.getDirezione(nome_linea);
       
                color = Color.parseColor( getResources().getString( reIntent.getIntExtra("color", 00000) ) );
               
                lineaScreen = (LinearLayout) findViewById(R.id.lineaScreen);
                lineaScreen.setBackgroundColor(color);
               
                  String[] from ={"partenza","tip"}; //dai valori contenuti in queste chiavi
                  int[]    to   ={R.id.lineaParte,R.id.tipoLinea};
               
                mAdapter = new SimpleAdapter(getApplicationContext(), listpartenze ,R.layout.row_item_partenze, from, to);

        //utilizzo dell'adapter
                listView = (ListView) findViewById(R.id.partenzeListView);
               
        //((ListView)findViewById(R.id.partenzeListView)).setAdapter(mAdapter);

                listView.setAdapter(mAdapter);
       
                listView.setOnItemClickListener(this);
               
               
        }

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               
                HashMap<String, String> select = (HashMap<String, String>) listView.getItemAtPosition(position);
       
                if(D) Log.d(TAG,"Onclick: " + select.get( "partenza" ) +" tipo: " + select.get( "tip" )  );
       
                changelayout( select.get( "partenza" ),  select.get( "tip" )  );
               
        }



        private void changelayout(String partenza, String tipo){

                orari = lineeService.getOrari(nome_linea, partenza, tipo);
               
               
               
                  String[] from ={"orario","nota"}; //dai valori contenuti in queste chiavi
                  int[]    to   ={R.id.orario,R.id.note};
               
                 mAdapter = new SimpleAdapter(getApplicationContext(), orari ,R.layout.row_item_orari, from, to);
                listView = (ListView) findViewById(R.id.partenzeListView);

                listView.setAdapter(mAdapter);
                mAdapter.notifyDataSetChanged();
       
       
        }
« Ultima modifica: 28 Novembre 2012, 19:46:51 CET da freefab »