这在Adapter.Java中
public void onClick(View v) {
String name=listItemData.get(i).getName();
Intent intent = Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("NAME", name);
}
我现在已经知道不在MainActivity类中时如何使用MainActivity.this。
答案 0 :(得分:1)
尝试以下代码。
解决方案1
在context
中初始化适配器时,您必须通过MainActivity
。
在MainActivity.this
中:
XyzAdapter adapter = new XyzAdapter(MainActivity.this, .. ..)
在您的Adapter
中:
private Context mContext;
public XyzAdapter(Context context .. ..){
mContext = context;
}
然后您可以执行以下操作:
public void onClick(View v) {
String name=listItemData.get(i).getName();
Intent intent = Intent(mContext, SecondActivity.class);
intent.putExtra("NAME", name);
mContext.startActivity(intent);
}
解决方案2
另一个选项是interface
创建一个interface
,如下所示:
public interface AdapterInterface {
public void buttonPressed();
}
现在在您的适配器中:
AdapterInterface buttonListener;
public XyzAdapter(Context context, AdapterInterface buttonListener)
{
super(context,c,flags);
this.buttonListener = buttonListener;
}
public void onClick(View v) {
buttonListener.buttonPressed()
}
在您的Activity
中:
AdapterInterface buttonListener;
public MainActivity extends AppCompactActivity implements AdapterInterface{
在onCreate
buttonListener = this;
XyzAdapter adapter = new XyzAdapter(MainActivity.this, buttonListener .. ..)
@Override
public void buttonPressed(){
// here you have to do once your click perform
}
答案 1 :(得分:0)
您可以在Adapter类中拥有一个Activity
类型的成员变量(例如private Activity mActivity;
),并将MainActivity实例传递给Adapter类的构造函数中的Adapter类,并将其分配给{{ 1}}。像这样的东西:
mActivity
然后使用您的public Adapter(Activity activity) {
this.mActivity = activity;
}
方法:
onClick