2011-12-31 75 views
1

我有一個鏈接到sqlite數據庫的列表視圖。我在數據庫中有3個項目,但每次點擊第二個和第三個值時,它都會給出與記錄集中第一個值相同的結果。如何移動記錄集中的後續項目?這裏是代碼:Listview在點擊時不顯示正確的行細節

  DBAdapter db = new DBAdapter(this); 
    db.open(); 

    lv = (ListView)findViewById(R.id.list); 

    //Get cursor for list items 
    cursor = db.getAllChannels(); 


    lv.setOnItemClickListener(new OnItemClickListener(){ 


     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 


      //String cText = lv.getItemAtPosition(position).toString(); 

      //retrieve database values 
      Toast.makeText(getApplicationContext(), cursor.getString(cursor.getColumnIndex(DBAdapter.KEY_STATIONURL)), Toast.LENGTH_SHORT).show(); 

     } 

    }); 

回答

0

當適配器已經使用遊標填充時,您應該避免使用提供給適配器的光標獲取數據。相反,使用getItem(int position)應該返回已經指向列表中正確項目的光標。然後,您的代碼應該是這樣的:

lv.setOnItemClickListener(new OnItemClickListener(){ 


     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 

      //retrieve database values 
      Cursor tempCursor = getItem(position); 
      Toast.makeText(getApplicationContext(), tempCursor.getString(tempCursor.getColumnIndex(DBAdapter.KEY_STATIONURL)), Toast.LENGTH_SHORT).show(); 

     } 

    }); 

你可以走了一步,並覆蓋你的CursorAdapter的getItem(position),使其返回Data *的對象,其中,你只需要getKeyStationUrl() *獲得您所需要的價值。

+0

非常感謝您的幫助。非常感謝:-) – user615099 2011-12-31 20:49:31

相關問題