Hallo zusammen,
ich bin neu hier im Forum und hätte auch gleich mal eine Frage zu einem Problem.
Ich versuche zur Zeit einen MP3-Player für Android umzusetzen. Funktioniert soweit alles ganz gut.
Doch momentan ist es so, dass der Benutzer nur eine Songliste hat und von dieser Liste einen Song zum Abspielen auswählen kann. Natürlich wird dann immer automatisch der nächste Song abgespielt.
Nun möchte ich aber folgendes umsetzen:
Es soll eine Songliste geben, von der man einen, mehrere oder alle Songs auswählen kann (per CheckBox) und diese dann einer Playliste hinzufügt.
Ich habe eine Klasse namens MP3Finder geschrieben, die alle Songs, die sich auf der SD-Karte befinden, ermittelt und in einer ArrayList mit einer HashMap<String, String> speichert. In der MP3Finder-Klasse habe ich eine Methode defniert >>getMP3List()<<, die diese ArrayList<HashMap<String, String>> zurückgibt.
In meiner SongListActivity habe ich ein ListView das die ganzen Songs aus diesem ListArray<HashMap<>> mittels CheckedTextView-Items auflistet.
Nun will ich wie bereits weiter oben erwähnt, dass alle ausgewählten Songs (gesetztes Häkchen) in einer neuen ArrayList<HashMap... gespeichert werden, die ich dann mittels einem Intent der PlayListActivity übergeben möchte.
Doch leider habe ich absolut keine Ahnung, wie ich die ListView-Items der HashMap übergeben soll. Das übergeben bzw. speichern der HashMap-Daten in die ListView habe ich ja mittels einem Adapter umgesetzt. Aber wie macht man das umgekehrt?
Google spuckt nur Beispiele aus, wie man Daten aus einer HashMap in einer ListView speichert. Umgekehrt habe ich leider keine Beispiele finden können. Daher hoffe ich, dass Ihr mir dabei helfen könnt.
public class SongListActivity extends AppCompatActivity {
// List of mp3 files
ArrayList<HashMap<String, String>> MP3List = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button isChecked = (Button) findViewById(R.id.btn_is_checked);
final ListView listView = (ListView) findViewById(R.id.list_view);
MP3Finder mp3Finder = new MP3Finder();
// Get all mp3's from sdcard
this.MP3List = mp3Finder.getMP3List();
// Add items to ListView
ListAdapter adapter = new SimpleAdapter(this, MP3List, R.layout.activity_item, new String[] { "mp3Title" }, new int[] {
R.id.mp3_title});
listView.setAdapter(adapter);
listView.setOnItemClickListener(new CheckBoxClick());
listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
isChecked.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SparseBooleanArray checked = listView.getCheckedItemPositions();
int len = listView.getCount();
for (int i = 0; i < len; i++) {
if (checked.get(i)) {
// ...an dieser Stelle möchte ich die ausgewählten Songs aus der ListView
// in meiner ArrayList<HashMap<...>> speichern...
}
}
}
});
}
public class CheckBoxClick implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView checkedTextView = (CheckedTextView) view;
if (checkedTextView.isChecked()) {
Toast.makeText(MainActivity.this, "checked", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "unchecked", Toast.LENGTH_SHORT).show();
}
}
}
}
Alles anzeigen
Ich hoffe ihr habt in etwa verstanden, was ich gerne umsetzen möchte. Ich hoffe ihr könnt mir dabei helfen. Ich würde mich jedenfalls sehr freuen.
Grüße DaveX78