В своей активности я просматриваю базу данных SQLite (_id, name, number) и добавляю столько кнопок, сколько у меня есть строк в базе данных. Для каждой кнопки я динамически создаю onClickListener, который запускает другое действие, в которое мне нужно передать данные из строки базы данных coresponding. Мой код выглядит следующим образом:
db.open();
String name;
String number;
Cursor c = db.getAllContacts();
c.moveToFirst();
int count = db.getCount();
for (int i = 0; i < count; i++) {
ImageButton button = new ImageButton(this);
name = c.getString(1);
number = c.getString(2);
button.setOnClickListener(new onClickListener() {
public void onClick(View v) {
Intent intent = new Intent(This_class.this, Other_class.class);
intent.putExtra("name_bundle", name);
intent.putExtra("number_bundle", number);
startActivity(intent);
}
});
c.moveToNext();
}
db.close();
В новой Деятельности, запущенной с помощью ImageButton, я работаю с переданными данными, как это:
Bundle extras = getIntent().getExtras();
name = extras.getString("name_bundle");
number = extras.getString("number_bundle");
Все кнопки созданы правильно, но моя проблема в том, что все они передают одну и ту же информацию. Мое намерение состояло в том, чтобы при нажатии третьей кнопки данные (столбцы 1 и 2 в коде) из третьей строки в базе данных передавались (во вновь запущенном действии я отображаю их в TextView). Но происходит то, что все кнопки передают одни и те же данные! Данные из последней строки базы данных будут точными. Когда я попытался добавить еще одну строку в базу данных, была создана одна дополнительная кнопка, и все они снова отобразили те же данные из только что созданной (следовательно, последней) строки базы данных. Я подозреваю, что в моем коде либо ошибка, либо совершенно неверный подход. Есть идеи? Спасибо !!