Wie werden die Daten nicht in einem DB gespeichert werden, von jeder Tätigkeit im Android zugegriffen?

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

Frage

Ich Übergabe von Daten zu einem Listview einig Restaurant-Namen angezeigt werden soll. Nun, wenn auf ein Element klicken, würde Ich mag eine andere Tätigkeit beginnen, mehr Restaurant Daten anzuzeigen. Ich bin mir nicht sicher, wie es zu tun. Soll ich alle das Restaurant Daten in einem Bündel durch die Absicht Objekt übergeben? Oder soll ich nur passieren das Restaurant-ID und die Daten in der anderen Tätigkeit bekommen? In diesem Fall, wie kann ich auf meinen restaurantList von der anderen Tätigkeit? In jedem Fall, wie kann ich Daten aus dem Restaurant klickte ich auf (die Ansicht enthält nur den Namen)?

Jede Hilfe, begrüßen Zeiger!

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;
    }
}
War es hilfreich?

Lösung

Sie können keine Zugangsdaten aus anderen Aktivitäten. Wenn Sie Daten in der Tätigkeit benötigen, die durch Klicken auf das Element in der Liste übergeben es an die neue Aktivität durch das Message Bundle gestartet wird.

Wenn Sie nur die ID auf die nächste Aktivität übergeben Sie das Restaurant aus einer Datenbank nachladen konnten oder aus dem Internet, aber Sie können es nicht aus der Liste in der ersten Aktivität verwendet abgerufen werden.

Wenn die Restaurants sind schwere Gegenstände erstellen könnten Sie implementieren Sie besitzen Anwendung Unterklasse und fügen Sie die Restaurantliste auf diese Anwendung Unterklasse. Jetzt können Sie die Liste wie folgt zugreifen:

einkaufsliste = (YourSubclass) GetApplication (). GetRestaurantList ()

Dies würde in Ihrem einkaufsliste die wohl Laufzeit von Ihnen in dem Speicher zu seine Anwendung, auch wenn die App im Hintergrund ist und alle Aktivitäten sind angehalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top