Como os dados não são armazenados em um DB ser acedido a partir de qualquer atividade no Android?

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

Pergunta

Estou passando dados para um ListView para exibir alguns nomes de restaurantes.Agora, ao clicar em um item que eu gostaria de iniciar outra atividade para apresentar mais um restaurante de dados.Eu não tenho certeza sobre como fazê-lo.Deve passar todos os restaurante de dados em um pacote através da intenção objeto?Ou será que eu apenas passar o restaurante id e obter os dados de outra atividade?Nesse caso, como eu posso acessar a minha restaurantList de outra atividade?Em qualquer caso, como eu posso conseguir os dados a partir do restaurante, eu cliquei no (a vista contém apenas o nome)?

Qualquer ajuda, ponteiros bem-vindo!

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;
    }
}
Foi útil?

Solução

Você não pode acessar dados de outras atividades.Se você precisa de dados em atividade, que é iniciado através de um click sobre o item na lista de passar para a nova atividade, através da mensagem de bundle.

Se você passar apenas o id para a próxima atividade, você pode recarregar o restaurante de um banco de dados ou da internet, mas você não pode recuperá-la a partir da lista utilizada na primeira atividade.

Se os restaurantes são pesados para criar objetos que você pode implementar próprio aplicação subclasse e anexar a lista restaurante para esta aplicação subclasse.Agora você pode acessar a lista como esta:

shopList = (YourSubclass)getApplication().getRestaurantList()

Isso resultaria em sua shoplist ser na memória do wohl tempo de execução da aplicação, mesmo se o aplicativo está no fundo e todas as atividades são colocadas em pausa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top