Каждый раз, когда к строке обращаются, она использует одну и ту же переменную, поэтому значения перезаписываются и, таким образом, только последняя строка используется для установки значений, передаваемых через намерение.
Если вам не нужно много намерений (например,добавьте положение к имени ключа), тогда было бы лучше извлечь данные из базы данных в другом упражнении.
Вы можете отправить много intentExtras (набор на строку) вместе со счетчикомколичество строк, использующих что-то вроде: -
private void xuLyXemLuotLike(View view) {
SQLiteDatabase database = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
Cursor cursor = database.query("ArirangSongList", null, null, null, null, null, null);
//dsBaiHatGoc.clear();
int soLike = 0;
int soDislike = 0;
String mabh ="";
String tenbh = "";
String casi = "";
Music music = new Music();
Intent intent = new Intent(MainActivity.this, XemLuotLikeActivity.class);
intent.putExtra("rowcounter",cursor.getCount()); //<<<<<<<<<< number of rows
while (cursor.moveToNext()) {
intent.putExtra("mabh"+String.valueOf(cursor.getPosition()),cursor.getString(0));
intent.putExtra("tenbh"+String.valueOf(cursor.getPosition()),cursor.getString(1));
intent.putExtra("casi"+String.valueOf(cursor.getPosition()),cursor.getString(3));
intent.putExtra("soLike"+String.valueOf(cursor.getPosition()),cursor.getInt(6));
intent.putExtra("soDislke"+String.valueOf(cursor.getPosition()),cursor.getInt(7));
}
cursor.close();
startActivity(intent);
}
- это будет отправлять intentExtras с ключами mabh0 mabh1 mabh2 ........
Затем вы можете получитьданные, используя что-то вроде: -
Intent intent = getIntent();
int rowcounter = intent.getIntExtra("rowcounter",-1);
Music[] allthemusicpass = new Music[rowcounter];
for (int i = 0; i < rowcounter; i++) {
allthemusicpass[i].setMa(intent.getStringExtra("mabh"+String.valueOf(i)));
allthemusicpass[i].setTen(intent.getStringExtra("tenbh"+String.valueOf(i)));
allthemusicpass.setCaSi(intent.getStringExtra("casi"+String.valueOf(i)));
allthemusicpass.setSoLike(intent.getIntExtra("soLike"+String.valueOf(i),-1));
allthemusicpass.setSoDislike(intent.getIntExtra("soDislike"+String.valueOf(i),-1));
}