列表视图onClick传递_id

时间:2010-12-29 07:26:43

标签: android listview

我创建了一个用户所有收件箱电子邮件的列表视图。现在点击电子邮件ID。我想有一个活动,我显示邮件的内容。问题是我无法理解如何将邮件的ID传递给活动以获取带有详细信息的电子邮件。

public class InboxActivity extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inbox);

        DBAdapter db = new DBAdapter(InboxActivity.this);
        db.open();
        long userID = Long.parseLong(MessagingApplication.getUserID());

        Cursor inbox = db.readInbox(userID);
        startManagingCursor(inbox);

        String[] mails = new String[] { DBAdapter.KEY_SUB };

        int[] to = new int[] { R.id.subject };

        SimpleCursorAdapter inboxmail = new SimpleCursorAdapter(this,
                R.layout.inbox_list, inbox, mails, to);

        setListAdapter(inboxmail);

        db.close();
    }
}

这是我的收件箱列表视图

1 个答案:

答案 0 :(得分:1)

看看Android SDK Notebook example。 您会看到他们正在使用Intent 传递数据(您的案例中的数据是指向您邮件的URI)。

您可以使用以下代码构建mailUri(基于列表中的所选项目),通过传递包含操作的新意图来启动新活动(Intent.ACTION_VIEW)和数据(mailUri)。

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Uri mailUri = ContentUris.withAppendedId(getIntent().getData(), id);
    startActivity(new Intent(Intent.ACTION_VIEW, mailUri));
}

使用Itents使您的代码更松散地耦合并促进重用(请注意您不指定需要启动的活动名称)。

检查Intent Filters上的Android基础知识,了解如何配置活动以对您的ACTION_VIEW mailUri采取行动。