jus*_*nny 67 java android adapter android-activity
我有自定义适配器的ListActivity.在每个视图中,它可能有一些按钮,我需要在其中实现OnClickListener.我需要在适配器中实现OnClickListener.但是,我不知道如何调用函数如startActivity()或setResult().因为适配器不会扩展到Activity.
那么解决这个问题的最佳方法是什么?谢谢
Rob*_*ond 170
只需将当前Context传递给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(...);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
cch*_*son 52
实施时onClickListener,您可以使用v.getContext.startActivity.
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.getContext().startActivity(PUT_YOUR_INTENT_HERE);
}
});
Run Code Online (Sandbox Code Playgroud)
edw*_*win 30
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, ToActivity.class);
intent.putExtra("your_extra","your_class_value");
context.startActivity(intent);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
Kam*_*ran 10
对于较新版本的sdk,您必须设置标志活动任务.
public void onClick(View v)
{
Intent myactivity = new Intent(context.getApplicationContext(), OtherActivity.class);
myactivity.addFlags(FLAG_ACTIVITY_NEW_TASK);
context.getApplicationContext().startActivity(myactivity);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95866 次 |
| 最近记录: |