繁体   English   中英

如何通过Android中的任何活动访问未存储在数据库中的数据?

[英]How can data not stored in a DB be accessed from any activity in Android?

我正在将数据传递到ListView以显示一些餐厅名称。 现在,当单击一个项目时,我想开始另一个活动以显示更多餐厅数据。 我不确定该怎么做。 我是否应该通过意图对象将所有餐厅数据打包分发? 还是我只需要传递餐厅ID并在其他活动中获取数据? 在这种情况下,如何从其他活动访问我的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;
    }
}

您无法访问其他活动的数据。 如果您需要通过单击列表中的项目开始的活动中的数据,则通过消息捆绑将其传递给新活动。

如果仅将ID传递给下一个活动,则可以从数据库或Internet重新加载餐厅,但无法从第一个活动中使用的列表中检索它。

如果餐厅要创建对象很繁重,则可以实现自己的应用程序子类 ,并将餐厅列表附加到此应用程序子类。 现在您可以像这样访问列表:

shopList =(YourSubclass)getApplication()。getRestaurantList()

即使该应用程序在后台并且所有活动都已暂停,这也会导致您的购物清单在应用程序的wohl运行时内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM