2014-10-27 70 views
0

我返回從數據庫這個數據,如何使用onclick方法從listview中獲取行的ID?

@Override 
public ArrayList <String> returnProducerData(String entereduser_id) { 

     Cursor c = db.rawQuery("Select * from producer_table WHERE user_id= "+entereduser_id, null); 
     ArrayList<String> producerResult = new ArrayList<String>(); 

     int ProducerId = c.getColumnIndex(PRODUCER_ID); 
     int UserId= c.getColumnIndex(USER_ID); 
     int ProducerName = c.getColumnIndex(PRODUCER_NAME); 
     int ProducerSurname = c.getColumnIndex(PRODUCER_SURNAME); 

     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      producerResult.add(c.getString(ProducerId) +" "+c.getString(UserId) +" "+ c.getString(ProducerName) +" "+ c.getString(ProducerSurname)); 

     } 

     return producerResult; 

} 

,我用這個方法來顯示數據在ListView

HashMap<String, String> user = session.getUserDetails(); 
String user_id= user.get(SessionManager.USER_ID); 
ArrayList<String> data = info.returnProducerData(user_id); 

    //set all data as listview using Array 
    listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data)); 
    //set listview action 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 
      String UserInfo = listView.getItemAtPosition(position).toString(); 
      Intent i =new Intent(ShowProducerTable.this, TestDataBase.class); 
        i.putExtra("UserInfo", UserInfo); 
        startActivity(i); 
        /***just to check if it has value***/    
      // Toast.makeText(getBaseContext(),"position is : "+position+" and value is "+UserInfo,Toast.LENGTH_SHORT).show(); 
        Toast.makeText(getBaseContext(), id + "", Toast.LENGTH_LONG).show(); 
     } 
    }); 

,現在我希望看到該行的producer_id其中i點擊。

你能幫我嗎?

回答

0
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
     // TODO Auto-generated method stub 
     String UserInfo = listView.getItemAtPosition(position).toString(); 
     String userId = UserInfo.substring(0, UserInfo .indexOf(" ")); 
     Intent i =new Intent(ShowProducerTable.this, TestDataBase.class); 
       i.putExtra("UserInfo", UserInfo); 
       startActivity(i); 
       /***just to check if it has value***/    
     // Toast.makeText(getBaseContext(),"position is : "+position+" and value is +UserInfo,Toast.LENGTH_SHORT).show(); 
       Toast.makeText(getBaseContext(), id + "", Toast.LENGTH_LONG).show(); 
    } 
}); 

請參閱線 「字符串userid = UserInfo.substring(0,的UserInfo .indexOf(」 「));」在代碼中...您將獲得用戶ID。

+0

非常感謝:)你節省了我的時間:) – Ert 2014-10-27 11:28:59

0
String productIDAsString; 

for(int i= 0; i < UserInfo.length;i+++) { 
    if(!(Userinfo.substring(i,i+1).equals(" ")) { 
     productIDAsString += UserInfo.substring(i,i+1); 
    } 
} 
int productID = Integer.parseInt(productIDAsString); 
0

使用框架提供的CursorAdapter實現之一。這樣,在由getItemAtPosition返回位置的項目,在Cursor的位置移動,從中你可以很容易地提取所需的信息,以避免黑客,可以是很難跟蹤/調試,並可能導致討厭的崩潰

0

或者你可以創建另一個POJO類來保存你的數據從數據庫返回,並使用它的getter方法,你就能得到想要的結果,如:

public ArrayList <Producer> returnProducerData(String entereduser_id) { 

    Cursor c = db.rawQuery("Select * from producer_table WHERE user_id= "+entereduser_id, null); 
    ArrayList<Producer> producerResult = new ArrayList<Producer>(); 

    int ProducerId = c.getColumnIndex(PRODUCER_ID); 
    int UserId= c.getColumnIndex(USER_ID); 
    int ProducerName = c.getColumnIndex(PRODUCER_NAME); 
    int ProducerSurname = c.getColumnIndex(PRODUCER_SURNAME); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
     Producer producer = new Producer(); 
     producer.setId(c.getString(ProducerId)); 
     producer.setUserId(c.getString(UserId)); 
     producer.setName(c.getString(ProducerName)); 
     producer.setSurname(c.getString(ProducerSurname)); 
     producerResult.add(producer); 

    } 

    return producerResult; 

}

然後使用自定義適配器的列表視圖,並在onItemClick方法,你可以通過調用producer.g來訪問id etUserID()方法。

相關問題