كيف لا يمكن الوصول إلى البيانات في ديسيبل من أي نشاط في Android؟

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

سؤال

أقوم بتمرير البيانات إلى ListView لعرض بعض أسماء المطاعم. الآن عند النقر فوق عنصر ، أود بدء نشاط آخر لعرض المزيد من بيانات المطعم. لست متأكدًا من كيفية القيام بذلك. هل أقوم بتمرير جميع بيانات المطعم في حزمة من خلال كائن النوايا؟ أو هل سأمرر معرف المطعم فقط وأحصل على البيانات في النشاط الآخر؟ في هذه الحالة ، كيف يمكنني الوصول إلى قائمة المطاعم الخاصة بي من النشاط الآخر؟ في أي حال ، كيف يمكنني الحصول على بيانات من المطعم الذي نقرت عليه (العرض يحتوي فقط على الاسم)؟

أي مساعدة ، يرحب المؤشرات!

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

مطعم 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;
    }
}

مطعم

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;
    }
}
هل كانت مفيدة؟

المحلول

لا يمكنك الوصول إلى البيانات من أنشطة أخرى. إذا كنت بحاجة إلى بيانات في النشاط الذي تم بدء تشغيله من خلال النقر على العنصر في القائمة ، فقم بتمريره إلى النشاط الجديد من خلال حزمة الرسائل.

إذا قمت بتمرير المعرف فقط إلى النشاط التالي ، فيمكنك إعادة تحميل المطعم من قاعدة بيانات أو من الإنترنت ولكن لا يمكنك استرداده من القائمة المستخدمة في النشاط الأول.

إذا كانت المطاعم ثقيلة لإنشاء كائنات يمكنك تنفيذه التي تملكها تطبيق الفئة الفرعية وإرفاق قائمة المطاعم بهذا التطبيق الفرعي. الآن يمكنك الوصول إلى القائمة مثل هذه:

قائمة المتسوق = (yoursubclass) getapplication (). getRestaurantList ()

سيؤدي ذلك إلى أن يكون قائمة المتجر الخاصة بك في الذاكرة وقت تشغيل Wohl لتطبيقك حتى لو كان التطبيق في الخلفية وتم إيقاف جميع الأنشطة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top