Comment peut-données ne sont pas stockées dans un DB sont accessibles de toute activité dans Android?

StackOverflow https://stackoverflow.com/questions/2856454

Question

Je passe des données à un ListView pour afficher des noms de restaurant. Maintenant, lorsque vous cliquez sur un élément que je voudrais commencer une autre activité pour afficher plus de données de restaurant. Je ne suis pas sûr de savoir comment le faire. Dois-je transmettre toutes les données de restaurant dans un paquet à travers l'objet l'intention? Ou vais-je simplement passer l'ID de restaurant et obtenir les données dans l'autre activité? Dans ce cas, comment puis-je accéder à mon restaurantList de l'autre activité? Dans tous les cas, comment puis-je obtenir des données du restaurant que je cliqué sur (la vue ne contient que le nom)?

Toute aide, pointeurs bienvenue!

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;
    }
}
Était-ce utile?

La solution

Vous ne pouvez pas accéder aux données d'autres activités. Si vous avez besoin de données dans l'activité qui a commencé par un clic est sur l'élément dans la liste passer à la nouvelle activité à travers le faisceau de messages.

Si vous passez uniquement l'identifiant à l'activité suivante vous pouvez recharger le restaurant à partir d'une base de données ou de l'Internet, mais vous ne pouvez pas le récupérer dans la liste utilisée dans la première activité.

Si les restaurants sont lourds pour créer des objets que vous pourriez vous mettre en œuvre sous-classe d'application et joindre la liste de restaurants à cette sous-classe d'application. Maintenant, vous pouvez accéder à la liste comme ceci:

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

Cela se traduirait par votre Shoplist étant dans la mémoire du moteur d'exécution wohl de votre application, même si l'application est en arrière-plan et toutes les activités sont en pause.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top