簡體   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