如何从自定义ListView适配器传递Intent Extra?

时间:2014-04-20 09:22:12

标签: android listview android-intent adapter

我查看了其他似乎如下所示的例子。

在Array Adapter中确保声明了Context

Context context;

    public ListViewJobAdapter(Context context, ArrayList jobItemsArrayList) {

        super(context, R.layout.tab3_list_row, jobItemsArrayList);
        this.context = context;
    }

我重写了ListView适配器的GetView。在这里我有一个textView onClick动作,它开始一个额外的新活动。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

        textView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Intent intentEditJob = new Intent(context,ActivityJobEdit.class);
                intentEditJob.putExtra("JOBID", "TEST");
                context.startActivity(intentEditJob);

现在Actvitiy开始了,但Extras没有通过。

    Intent intentExtras = getIntent();
    String editJobID = intentExtras.getStringExtra("JOBID");

在客户ListView适配器中,如果我在getView之外调用Intent函数,它就可以工作并传递Extra。不确定为什么这在引用上下文时在GetView的onClick中不起作用?现在我将使用在GetView外部调用它的解决方法。

public void callEditActivity(){
    Intent intentEditJob = new Intent(context,ActivityJobEdit.class);
    intentEditJob.putExtra("TEST", "JOBID");
    context.startActivity(intentEditJob);
}

2 个答案:

答案 0 :(得分:3)

看起来您与用于存储和检索值的密钥不一致。

putExtra方法接受键作为第一个参数,值接受第二个参数。 根据你所写的内容,我假设“JOBID”是callEditActivity中你使用“TEST”作为关键词的关键。

确保您与此保持一致,并且所有内容都将对齐。

要设置额外意图参数,请使用:

intentEditJob.putExtra("JOBID", "TEST");

要检索额外的intent参数,请使用:

String editJobID = intentExtras.getStringExtra("JOBID");   

答案 1 :(得分:0)

首先为您的意图值创建一个静态最终字符串:

public static final string result = "result";

public void callEditActivity() {
    Intent intentEditJob = new Intent(context,ActivityJobEdit.class);
    intentEditJob.putExtra(result, "JOBID");
    context.startActivity(intentEditJob);
}

然后叫它:

Intent intentExtras = getIntent();
String editJobID = intentExtras.getStringExtra(previousClass.result);
相关问题