onListItemClickListener:传递long id值

时间:2012-09-13 12:48:23

标签: android database sqlite onitemclicklistener

更新

我问的原始问题是关于我的长id值,但是因为你们是对的,你说我有正确的ID我删除了我的错误。谢谢您的帮助。阅读我的答案以获取更多细节。

1)我的应用程序使用本地android SQLiteDatabase并有三个表。我对其中两个表没有问题,但事实证明我的第三个表是因为我的列声明是public static final string COLUMN_NAME = "name";等而提出了一些问题。

我的活动没有扩展ListActivity,因此我可以为每个活动提供自定义列表和列表视图。

我通过listview = (ListView) findViewById(R.id.myList);获取我的listview并通过listview.setOnItemClickListener(ListListener);向listview添加一个监听器然后这是我的列表监听器的方法:

 OnItemClickListener ListListener = new OnItemClickListener(){

    public void onItemClick(AdapterView<?> arg0, View v, int position,
            final long id)
{
        AlertDialog.Builder dialog = new AlertDialog.Builder(ExerciseList.this)
        .setIcon(R.drawable.edit)
        .setTitle("Update Selected Exercise")
        .setMessage("Would you like to update the current Exercise? Click continue to proceed.")
        .setPositiveButton("Continue", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {

                final Intent i = new Intent(getBaseContext(), AddExercise.class);
                i.putExtra(ExerciseDbAdapter.KEY_ROW_ID, id);
                startActivityForResult(i, EDIT_EXERCISE);

            }
        })
        .setNegativeButton("Back", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();

            }
        });
        dialog.show();  
    }
}; 

以上方法仅适用于列表项单击侦听器!

2 个答案:

答案 0 :(得分:0)

  Intent.putExtra("Key",value) is right way to put the data in intent so 

   i.putExtra("INSERT THE KEY HERE",ExerciseDbAdapter.KEY_ROW_ID, id);

答案 1 :(得分:0)

好的,所以我发现我的应用程序存在问题,你没事。我从应用程序中获取了正确的行ID。

然而,我通过我的意图传递了另一个数据成员,导致setRowIdFromIntent()方法将ID从null更改为0。或者从null0

基本上无论我传递的值是什么,因为我传递的数据成员,我从0方法设置为setRowIdFromIntent()。因此,上面的代码几乎与我的问题无关。

因此,如果您想要使用点击列表监听器,上面的那个肯定会帮助您将正确的ID传递给您的新活动。再次抱歉,我有这种困惑。再次感谢所有其他帖子!