Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击带有\ u id的列表项可获取信息_Android_Android Intent_Android Sqlite - Fatal编程技术网

Android 单击带有\ u id的列表项可获取信息

Android 单击带有\ u id的列表项可获取信息,android,android-intent,android-sqlite,Android,Android Intent,Android Sqlite,我有一个由数据库填充的列表视图。listview显示数据库的某些列。我希望能够单击listItem并显示显示整个记录的新活动。我正试图通过一个意图来传递id,但它不起作用。活动正在启动,但未填充文本视图。我在这里包括了相关的代码片段。非常感谢你的帮助 main活动 public class MainActivity extends ListActivity { .... @Override public void onCreate(Bundle savedInstance

我有一个由数据库填充的列表视图。listview显示数据库的某些列。我希望能够单击listItem并显示显示整个记录的新活动。我正试图通过一个意图来传递id,但它不起作用。活动正在启动,但未填充文本视图。我在这里包括了相关的代码片段。非常感谢你的帮助

main活动

public class MainActivity extends ListActivity {
    ....
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ...
        ...  
    }

    private void fillList() {
        ListView lv = getListView();

        Cursor c = db.getData();
        startManagingCursor(c);

        CustomCursorAdapter adapter = new CustomCursorAdapter(getApplicationContext(), c);
        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position, long id){
                Intent k = new Intent(MainActivity.this, ProductDetails.class);
                k.putExtra("item_id", id);
                startActivity(k);
            }
        });
    }

}
DB.getDetails()-来自ProdDB

String[] columns = new String[] {KEY_ROWID, 
        KEY_PRODCODE,
        KEY_PRODNAME,
        KEY_PRODTYPE,
        KEY_PRODCAT,
        KEY_PRODPRICE,
        KEY_PRODRRP,
        KEY_PRODSUPPLIER,
        KEY_NOTES};
return db.query(DB_TABLE, columns, KEY_ROWID + " = ?", new String[]{String.valueOf(id)}, null, null, null);

出现问题的原因是您正在使用
while(cursor.moveToFirst()){
。如果必须使用
while
循环,则应使用
.moveToNext()
取而代之。否则,您可以在执行moveToFirst时取出
循环,因为我假设您只需要一行。至于原因,请不要问我,我无法告诉您。

1.两个活动中是否有相同的
id
?2.如果有,请检查函数get data。尝试记录光标值。
String[] columns = new String[] {KEY_ROWID, 
        KEY_PRODCODE,
        KEY_PRODNAME,
        KEY_PRODTYPE,
        KEY_PRODCAT,
        KEY_PRODPRICE,
        KEY_PRODRRP,
        KEY_PRODSUPPLIER,
        KEY_NOTES};
return db.query(DB_TABLE, columns, KEY_ROWID + " = ?", new String[]{String.valueOf(id)}, null, null, null);