目的问​​题:如何从另一个类“适配器”使用MainActivity将数据传递给SecondActivity

时间:2019-03-17 02:20:11

标签: java android android-intent android-activity android-adapter

这在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。

2 个答案:

答案 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