2012-11-08 59 views
0

我有一個由數據庫填充的列表視圖。該列表視圖顯示數據庫的一些列。我希望能夠點擊listItem並顯示一個顯示整個記錄的新活動。我試圖通過傳遞一個意圖之間的ID來做到這一點,但它不工作。該活動正在開始,但textViews沒有被填充。我在這裏包含了相關的代碼片段。真的很感激一些幫助從列表項獲取信息_Click

MainActivity

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); 
      } 
     }); 
    } 

} 

ProdDetails

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     db = new ProdDB(this); 
     setContentView(R.layout.product_details); 
     db.open(); 

     long id = getIntent().getLongExtra("item_id", 0); 

     Cursor cursor = db.getDetails(id); 
     while(cursor.moveToFirst()){ 
      tv1.setText(cursor.getString(cursor.getColumnIndex(ProdDB.KEY_PRODCODE))); 
      tv2.setText(cursor.getString(cursor.getColumnIndex(ProdDB.KEY_PRODNAME))); 
      ... 
      ... 
     } 
    } 
} 

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); 
+0

1.您在這兩項活動中是否都有相同的「id」? 2.如果你這樣做,檢查函數獲取數據。嘗試記錄遊標值。 –

回答

2

您遇到問題,因爲您正在使用while(cursor.moveToFirst()){。如果您必須使用while循環,則應該使用.moveToNext()來代替。否則,你可以取出moveToFirst的while循環,因爲我假設你只需要一行。至於爲什麼,不要問我,我不能告訴你。

+0

非常感謝! – adohertyd