Что нужно добавить в другое, чтобы получить описание содержания в
secondactivity
Типичным способом было бы получить rowid или псевдоним rowid из Product в mProductList , элемент которого как указывает позиция (передается методу onItemClick
). Это единственное значение (также известное как id ) может быть передано во второе действие, извлечено из этого действия и затем использовано для получения оставшихся данных (столбцов) из базы данных.
Псевдоним rowid будет столбцом, определенным как ?? INTEGER PRIMARY KEY
(с необязательным ключевым словом AUTOINCREMENT
), или это может быть ?? INTEGER, ...other column definitions.... PRIMARY KEY(??)
. Куда ?? будет именем столбца.
Если объект Product не содержит id , вы можете либо изменить его так, чтобы он содержал id , либо получить и передать любые значения, которые делают однозначно идентифицировать соответствующий ряд.
Передача значений через намерение и их извлечение выглядят хорошо. Однако columnNames
, если он содержит имена столбцов, а не содержимое, не сможет идентифицировать конкретную строку.
Предполагая, что Product сохраняет id , и у вас есть метод getId
, который извлекает id , тогда вы можете иметь: -
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
long id_to_pass =((Product)parent.getItemAtPosition(position)).getId(); //<<<< Get id (recommended)
//long id_to_pass = mProductList.get(position).getId(); //<<<< Get id (alternative)
Intent intent=new Intent(MainActivity.this, secondactivity.class);
//intent.putExtra("Listviewclickvalue",columnNames); //<<<< commented out
intent.putExtra("Listviewclickvalue",id_to_pass); //<<<< Pass id
startActivity(intent);
}
Конечно, если вы просто хотите передать данные напрямую, вы можете извлечь их из Продукта аналогично тому, как идентификатор был извлечен выше. Тем не менее, здесь часто возникают вопросы, связанные с «но как мне получить идентификатор, чтобы я мог удалять / обновлять данные в базе данных».