1

我有带有可扩展列表视图的Activity1 ,它有自定义适配器,

在该适配器类中,我在可扩展列表视图的子项中捕获按钮的 onClick 事件,并且我需要将有关可扩展列表的选定子项的数据传递给Activity2,用户在其中进行一些选择,我需要在完成后获得结果, (当Activity2完成时)在适配器类中,如何实现?

在适配器类中工作,我只能在新线程中启动 Activity2,所以我不能调用一些 StartActivityForResult ...

我希望有一些方法可以创建共享变量并在任何地方使用它,但不知道如何......所以请帮助我!

4

4 回答 4

1

您可以在活动中创建OnClickListener类初始化它并传递给适配器。将其设置为适配器中的按钮。单击一个按钮后,他的监听器将触发并做任何你想做的事情。如果您需要传递一些参数,只需覆盖OnClickListener以获取您需要的所有参数。

你可以onClickListener这样写(例如ListActivity,所以只需将 getListView 更改为你的ListView):

private OnClickListener mEditClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        int position = getListView().getPositionForView(v);
    }
}
于 2013-06-16T11:33:33.013 回答
1

在适配器构造函数中,将 Context 作为参数保存在类变量中。例如,它保存在Context callerContext变量中。现在,在 onItemClickListener 中,编写以下代码

Intent i = new Intent( callerContext , Activity2.class );
i.putExtra( "value" , items[position] );
callerContext.startActivity( i );
于 2013-06-16T11:46:34.607 回答
0

在按钮上单击 set startActivityForResult 和 Set Result from Activity2 将自动在 Activity1 的 onActivityResult 中找到。

于 2013-06-18T11:24:20.283 回答
0

如果您希望将活动的结果返回到您的普通类,假设它是一个带有自定义适配器的类。

  1. 您不能使用 startActivityForResult,因为您不在活动中
  2. 我所做的是,我有意识地从课堂上发起了活动。然后我计算或做了我必须做的。从这个活动中,我将信息发送到使用方法 MainActivity.the_method() 假定的主类,并且在主活动中我更改了自定义适配器 o 做了我必须使用适配器对象并调用 adapter.getItem(position)

希望这可以给你一个想法

于 2014-12-01T09:35:08.610 回答