DBに保存されないデータにAndroidのアクティビティからアクセスするにはどうすればよいですか?
-
27-09-2019 - |
質問
データをListViewに渡して、レストランの名前を表示しています。アイテムをクリックするときは、より多くのレストランデータを表示するために別のアクティビティを開始したいと思います。どうすればいいのかわからない。 Intentオブジェクトを介してバンドルのすべてのレストランデータを渡すことはできますか?または、レストランIDを渡して、他のアクティビティでデータを取得しますか?その場合、他のアクティビティからレストランリストにアクセスするにはどうすればよいですか?いずれにせよ、クリックしたレストランからデータを取得するにはどうすればよいですか(ビューには名前のみが含まれています)?
どんな助け、ポインターを歓迎します!
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のみを渡すと、データベースまたはインターネットからレストランをリロードできますが、最初のアクティビティで使用されたリストからそれを取得することはできません。
レストランがオブジェクトを作成するのに重い場合、自分で実装できる アプリケーションサブクラス このアプリケーションサブクラスにレストランリストを添付します。これで、このようなリストにアクセスできます。
shoplist =(yoursubclass)getApplication()。getRestaurantList()
これにより、アプリがバックグラウンドにあり、すべてのアクティビティが一時停止されていても、あなたのショップリストがあなたのアプリケーションのWohlランタイムをメモリに登録します。