1

嗨,这是我的列表视图 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 类?

4

4 回答 4

5

您可以使用类传递您的对象Parcelable..

就像是,

public class RouteBean implements Parcelable {

}

一旦你实现Parcelable了你的对象,只需将它们放入你的 Intent 中putExtra()

Intent i = new Intent();
i.putExtra("object", Parcelable_Object);

然后您可以使用以下命令将它们拉回来getParcelableExtra()

Intent i = getIntent();
RouteBean bean = (RouteBean) i.getParcelableExtra("object");

有关更多信息,请查看这个 SO question How to pass an object from an Activity to another on Android

于 2012-07-26T07:17:11.620 回答
1

我认为这是可能的。你必须像这样发送你班级的对象,

   intent.putExtra("RouteBean", bean); 

在你的下一个活动中像这样检索它,

getIntent().getSerializableExtra("RouteBean");

但是你的类必须实现Serializable接口。

或者你可以使用 Parcelable 接口,

这是一个例子,

https://stackoverflow.com/a/6923794/603744

对于第一种方法,你的类应该是这样的,

public class RouteBean implements Serializable 
{

}

而对于下一个,

public class RouteBean implements Parcelable 
{

}
于 2012-07-26T07:14:51.080 回答
1

使您的 RouteBean 类实现Parcelable接口。然后,您可以将您的自定义类对象作为包传递给其他活动。

然后你可以使用 -

class 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的更多信息。

于 2012-07-26T07:15:33.457 回答
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 
于 2012-07-26T07:21:25.367 回答