嗨,这是我的listview onClicklister。
当我点击列表项时,我将从bean类一个活动获取的arraylist传递给另一个活动,如下所示。
但我想知道我们可以将bean类传递给下一个活动吗?
listViewRoutes.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
RouteBean bean = routeList.get(arg2);
ArrayList<Double> fromLatitude = bean.getFromLatitude();
ArrayList<Double> fromLongitude= bean.getFromLongitude();
ArrayList<Double> toLatitude = bean.getToLatitude();
ArrayList<Double> toLongitude= bean.getToLongitude();
Intent intent =new Intent("MapActivityView");
intent.putExtra("fromLon", fromLongitude);
intent.putExtra("fromLat", fromLatitude);
intent.putExtra("toLat", toLatitude);
intent.putExtra("toLon", toLongitude);
startActivity(intent);
}
});
如果我通过“Route Bean”,我会得到下一个活动的值。
是否可以传递bean类?
答案 0 :(得分:4)
您可以使用Parcelable
类传递对象..
之类的,
public class RouteBean implements Parcelable {
}
一旦你的对象实现了Parcelable
,只需用putExtra()
将它们放入你的意图:
Intent i = new Intent();
i.putExtra("object", Parcelable_Object);
然后您可以使用getParcelableExtra()
Intent i = getIntent();
RouteBean bean = (RouteBean) i.getParcelableExtra("object");
有关详细信息,请查看此问题How to pass an object from one activity to another on Android
答案 1 :(得分:1)
我认为这是可能的。你必须像这样发送你的类的对象,
intent.putExtra("RouteBean", bean);
在下一个活动中检索它,
getIntent().getSerializableExtra("RouteBean");
但是你的班级必须实现Serializable
接口。
或者你可以使用Parcelable Interface,
这是一个例子,
https://stackoverflow.com/a/6923794/603744
对于第一种方法,你的类应该是这样的,
public class RouteBean implements Serializable
{
}
对于下一个,
public class RouteBean implements Parcelable
{
}
答案 2 :(得分:1)
使您的RouteBean类实现Parcelable
接口。然后,您可以将自定义类对象作为意图中的包传递给其他活动。
然后您可以使用 -
类RouteBean实现Parceable 然后在调用意图时。
Bundle bundle = new Bundle();
RouteBean yourObj = new RouteBean();
bundle.putParcelable("bundlename", yourObj);
在下一个活动中,您可以使用
RouteBean yourObj bundle.getParcelable("bundlename");
有关Parceable http://developer.android.com/reference/android/os/Parcelable.html的更多信息。
答案 3 :(得分:0)
是的,您可以通过in1.putExtra("beanObject", bean)
完成此操作。
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
bean = (ActivitiesBean) adapter.getItem(position); //ActivitiesBean is the name of the bean class
Intent in1 = new Intent(firstclass.this, secondclass.class);
in1.putExtra("beanObject", bean);
startActivity(in1);
}
});
并将其用于secondclass.java
ActivitiesBean bean = (ActivitiesBean) getIntent().getSerializableExtra("beanObject");
txt_title.setText(bean.getTitle()); //txt_title is the object of the textview