Как можно получить доступ к данным, не хранящимся в БД, из любого действия в Android? - PullRequest
1 голос
/ 18 мая 2010

Я передаю данные в ListView для отображения названий некоторых ресторанов. Теперь при нажатии на элемент я хотел бы начать другое действие, чтобы отобразить больше данных ресторана. Я не уверен, как это сделать. Должен ли я передать все данные ресторана в связке через объект намерения? Или я просто передам идентификатор ресторана и получу данные в другой деятельности? В таком случае, как я могу получить доступ к списку restaurantList из других действий? В любом случае, как я могу получить данные из ресторана, на который я нажал (представление содержит только название)?

Любая помощь, указатели приветствуются!

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;
    }
}

1 Ответ

1 голос
/ 18 мая 2010

Вы не можете получить доступ к данным из других действий. Если вам нужны данные в действии, которое запускается нажатием на элемент в списке, передайте его новому действию через пакет сообщений.

Если вы передадите только идентификатор следующему занятию, вы можете перезагрузить ресторан из базы данных или из Интернета, но не сможете получить его из списка, использованного в первом занятии.

Если рестораны тяжелы для создания объектов, вы можете реализовать свой собственный подкласс приложения и прикрепить список ресторанов к этому подклассу приложения. Теперь вы можете получить доступ к списку так:

shopList = (YourSubclass) getApplication (). GetRestaurantList ()

Это приведет к тому, что ваш список покупок окажется в памяти во время выполнения вашего приложения, даже если приложение находится в фоновом режиме и все действия приостановлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...