Domanda

sto passando i dati ad un ListView per visualizzare alcuni nomi del ristorante. Ora, quando si fa clic su un elemento Mi piacerebbe iniziare un'altra attività per visualizzare più dati di ristorante. Io non sono sicuro di come farlo. Devo passare tutti i dati del ristorante in un fascio attraverso l'oggetto intento? O devo solo passare il ristorante id e ottenere i dati nelle altre attività? In tal caso, come posso accedere al mio restaurantList dalla altra attività? In ogni caso, come posso ottenere i dati dal ristorante ho cliccato sul (la vista contiene solo il nome)?

Qualsiasi aiuto, puntatori benvenuto!

ListView lv= (ListView)findViewById(R.id.listview);

lv.setAdapter( new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,restaurantList.getRestaurantNames()));

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        Intent i = new Intent(Atable.this, RestaurantEdit.class);
        Bundle b = new Bundle();
        //b.putInt("id", ? );
        startActivityForResult(i, ACTIVITY_EDIT);
    }
});

RestaurantList.java

package org.digitalfarm.atable;
import java.util.ArrayList;
import java.util.List;

public class RestaurantList {

    private List<Restaurant> restaurants = new ArrayList<Restaurant>();

    public List<Restaurant> getRestaurants() {
        return this.restaurants;
    }

    public void setRestaurants(List<Restaurant> restaurants) {
        this.restaurants = restaurants;
    }

    public List<String> getRestaurantNames() {      

        List<String> restaurantNames = new ArrayList<String>();

        for (int i=0; i<this.restaurants.size(); i++) {
            restaurantNames.add(this.restaurants.get(i).getName());
        }

        return restaurantNames;
    }
}

Restaurant.java

package org.digitalfarm.atable;

public class Restaurant {

    private int id;
    private String name;        
    private float latitude;
    private float longitude;

    public int getId() {
        return this.id; 
    }

    public void setId(int id) {
        this.id = id;
    }       

    public String getName() {
        return this.name;   
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getLatitude() {
        return this.latitude;
    }

    public void setLatitude(float latitude) {
        this.latitude = latitude;
    }

    public float getLongitude() {
        return this.longitude;
    }

    public void setLongitude(float longitude) {
        this.longitude = longitude;
    }
}
È stato utile?

Soluzione

Non puoi accedere ai dati da altre attività. Se avete bisogno di dati dell'attività che viene avviato tramite clic sulla voce dell'elenco passarlo alla nuova attività attraverso il fascio messaggio.

Se si passa solo l'ID per l'attività successiva si potrebbe ricaricare il ristorante da un database o da internet, ma non è possibile recuperare dall'elenco utilizzato nella prima azione.

Se i ristoranti sono pesanti per creare oggetti si potrebbe implementare Possiedi un applicazione sottoclasse e allegare l'elenco ristorante a questa applicazione sottoclasse. Ora è possibile accedere alla lista in questo modo:

Shoplist = (YourSubclass) getApplication (). GetRestaurantList ()

Questo comporterebbe il tuo shoplist essere nella memoria del runtime Wohl di voi l'applicazione, anche se l'applicazione è in background e tutte le attività sono in pausa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top