在活动之间传递数据

时间:2011-04-13 00:45:36

标签: java android listview

我有以下代码:

chart.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    final String aux= (String) lt.getItemAtPosition(position);
        Intent myIntent = new Intent(infoList.this, tabList.class);
        startActivity(myIntent);
    }
});

我也有ListView。当我点击ListView中的某个项目时,我会导航到另一个显示该活动信息的活动。我怎么做?我希望该信息与我点击的项目相对应。

5 个答案:

答案 0 :(得分:3)

这是我在这种情况下所做的,如果你不想只传回一个id:

我用这个打电话给另一个活动:

            Intent intent = new Intent(myapp, CreateExerciseActivity.class);
            intent.putExtra("selected_id", workout.getId());
            startActivityForResult(intent, CREATE_ACTIVITY);

然后我做

            Intent returnIntent = new Intent();
            returnIntent.putExtra("name", m.getName());
            returnIntent.putExtra("unit", m.getUnit());
            returnIntent.putExtra("quantity", m.getQuantity());
            if (getParent() == null) {
                setResult(Activity.RESULT_OK, returnIntent);
            } else {
                getParent().setResult(Activity.RESULT_OK, returnIntent);
            }
            finish();

所以,在这种情况下,我传入一个id,以便从用户那里获得更多细节,然后我将它们传递回调用活动,以便添加它,因为我不想保存这个直到用户选择以后。

因此,您需要执行startActivityForResult才能让它返回数据。

答案 1 :(得分:2)

您可以使用putExtra()方法向Intent添加一些数据,然后使用getExtras()。getSomething()检索新Activity中的数据。

答案 2 :(得分:1)

我猜您必须使用OnItemClickListener而不是点击事件,并且您需要打算调用下一个活动。

private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id)
{
    Intent intent = new Intent(this, MyInfoActivity.class);
    intent.putExtra("selected_id", getIdFor(position));
    startActivity(intent);
}
};

mHistoryView = (ListView)findViewById(R.id.history);
mHistoryView.setOnItemClickListener(mMessageClickedHandler); 

答案 3 :(得分:0)

答案 4 :(得分:0)

这实际上取决于列表视图中的数据。例如,如果您在列表视图中显示联系人列表,则可以将联系人的ID传递给其他活动,并让该活动访问联系人的内容提供商以检索您希望其工作的数据用。您将在intent的数据字段中的URI中传递ID,而不是在extras包中。