Как получить идентификатор строки из списка с помощью метода onclick?
Я возвращаю эти данные из базы данных,
@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;
}
и я использую этот метод, чтобы показать данные в виде списка
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();
}
});
и теперь я хочу увидеть идентификатор_производителя строки, в которой я нажал.
Не могли бы вы мне помочь?
4 ответа
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();
}
});
Пожалуйста, смотрите строку "String userId = UserInfo.substring(0, UserInfo .indexOf(" "));" в коде... Вы получите идентификатор пользователя.
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);
Или вы можете создать другой класс POJO для хранения ваших данных, возвращаемых из базы данных, и используя его метод получения, вы сможете получить желаемый результат, например:
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 вы можете получить доступ к идентификатору, вызвав метод provider.getUserID().
Используйте один из CursorAdapter
реализация обеспечена рамками. Таким образом, товар на позиции возвращается getItemAtPosition
, в Cursor
переместился в положение, из которого вы можете легко извлечь нужную информацию, избегая взломов, которые могут быть трудны для отслеживания / отладки и могут привести к неприятным сбоям