2014-10-27 37 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()方法。

相关问题