如何启动适配器中的活动?

我有我的自定义适配器的ListActivity。 并在每个视图中,它可能有一些button,其中我需要实现OnClickListener。 我需要在适配器中实现OnClickListener。 但是,我不知道如何调用像startActivity()或setResult()函数。 因为适配器不会扩展到Activity。

那么解决这个问题的最好方法是什么? 谢谢

只需将当前上下文传递给Adapter构造函数,并将其作为字段存储即可。 然后,在onClick中,您可以使用该上下文来调用startActivity()。

伪代码

public class MyAdapter extends Adapter { private Context context; public MyAdapter(Context context) { this.context = context; } public View getView(...){ View v; v.setOnClickListener(new OnClickListener() { void onClick() { context.startActivity(...); } }); } } 

在实现v.getContext.startActivity ,可以使用v.getContext.startActivity

 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { v.getContext().startActivity(PUT_YOUR_INTENT_HERE); } }); 
 public class MyAdapter extends Adapter { private Context context; public MyAdapter(Context context) { this.context = context; } public View getView(...){ View v; v.setOnClickListener(new OnClickListener() { void onClick() { Intent intent= new Intent(context, goto.class); intent.putextra("your_extra","your_class_value"); context.startActivity(intent); } }); } } 

对于较新版本的SDK,你必须设置标志活动任务。

 public void onClick(View v) { Intent myactivity = new Intent(context.getApplicationContext(), OtherActivity.class); myactivity.addFlags(FLAG_ACTIVITY_NEW_TASK); context.getApplicationContext().startActivity(myactivity); } 

从适配器到活动的callback可以通过以接口的forms注册监听器来完成:创build一个接口:

  public MyInterface{ public void yourmethod(//incase needs parameters ); } 

在适配器中让我们说MyAdapter:

  public MyAdapter extends BaseAdapter{ private MyInterface listener; MyAdapter(Context context){ try { this. listener = (( MyInterface ) context); } catch (ClassCastException e) { throw new ClassCastException("Activity must implement MyInterface"); } 

/ /这样你需要消防监听器

  try { listener . yourmethod (); } catch (ClassCastException exception) { // do something } In Activity Implement your method: MyActivity extends AppCompatActivity implements MyInterface{ yourmethod(){ //do whatever you want } }