将特定变量从ListView传递到下一个活动(Android)

时间:2015-04-08 15:25:39

标签: android listview

我有一个ListView,对于每个结果,显示名称,电话号码,网站和地址,方式如下:

名称

地址

电话号码

网站

目前我的onClickListener看起来像这样:

    private AdapterView.OnItemClickListener onListClick = new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent intent = new Intent(Results.this, ResultDetail.class);
            intent.putExtra("????????", ?????????);

        }

    };

我知道我需要使用putExtra传递变量,但不确定如何获取我正在处理的结果的特定电话号码或网站值。

其他问题似乎没有关注每个结果有多个值,所以如果有人有任何帮助我会很感激!

编辑:如果这是有用的信息,则使用适配器用来填充列表的游标收集listViews结果。

1 个答案:

答案 0 :(得分:3)

方法

public void onItemClick(AdapterView parent,View view,int position,long id)

最后一个参数是数据库中记录的id列值。使用此id从数据库中检索记录。

你意图额外只是一个名称值对的映射,就像一个Hashmap。在将意图填充到您的需求之后,请调用startActivity,以启动ResultDetail活动。

Intent intent = new Intent(Results.this, ResultDetail.class);
intent.putExtra("phone", phoneNumber);
startActvity(intent);

在ResultDetail活动中,以下代码将检索值

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // get event to edit
    Bundle extras = getIntent().getExtras();
    String phoneNumber = extras.getString("phone");
}   

或者,不是在意图中传递电话号码,地址,而是可以传递id。然后ResultDetail活动可以使用id检索记录。因此,将来,如果您决定向表中添加新列,例如mobilenumber,您只需要更改ResultDetail中的代码。