嘿大家我是Android编程的新手,需要一些帮助。我有一个由HashMap对象组成的列表视图。可以通过选中复选框来选择这些hashMap对象。 (所以基本上我有一个复选框列表)。我想要做的是将所有在ListView中检查的HashMap对象(或项)存储在ArrayList中。然后我想在按下按钮时将此arrayList传递给另一个活动。我已经看到一些人存储字符串数据的例子,但是我需要一些帮助来解决如何将listView中的“已检查”HashMap对象存储到ArrayList中。所以最后我想要的是一个ArrayList,它由在列表中检查过的对象(项)组成,然后我可以传递。
目标是什么:允许用户根据类别选择歌曲并创建自己的自定义播放列表。用户将被呈现为一个类别的歌曲,他们将从该类别中选择他们想要的歌曲然后按下“下一步”按钮,该按钮将他们发送到新活动,在那里他们将被呈现新类别的歌曲。在每个类别中,我都试图存储他们的选择并将其从活动(类别)传递到活动(类别)。但是传球不起作用。我可以做点什么。需要一些建议或者怎么做。 -Thanx
一些代码:我知道的不是最有条理的。 Android新手,所以我应该更改任何指针或事物
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playlist);
//final ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
SongsManager plm = new SongsManager();
// get all songs from sdcard
this.songsList = plm.getPlayList();
TextView label = new TextView(this);
label.setText("Warm-up");
label.setTextSize(16);
label.setBackgroundColor(Color.WHITE);
label.setTextColor(Color.BLACK);
final ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
// looping through playlist
for(HashMap hs: songsList){
if(hs.containsValue("Warm-up/cool down"))
songsListData.add(hs);
}
// NEXT button
Button btnLoadMore = new Button(this);
btnLoadMore.setText("Next");
ListView lv = getListView();
lv.addHeaderView(label);
// Adding Load More button to lisview at bottom
lv.addFooterView(btnLoadMore);
//List<Model> selectedlist = getModel(songsListData);
ArrayAdapter<Model> adapter = new InteractiveArrayAdapter(this,
getModel(songsListData));
setListAdapter(adapter);
//Listening to Load More button click event
btnLoadMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String priorSongs = "priorSongs";
List<Model> selSongs = getModel(songsListData);
Intent i = new Intent(WarmUp.this, SlowWalking.class);
i.putExtra(priorSongs, selSongs);
startActivity(i);
}
});
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting listitem index
int songIndex = position;
// Starting new intent
Intent in = new Intent(getApplicationContext(),
AndroidBuildingMusicPlayerActivity.class);
in.putExtra("songIndex", songIndex);
startActivity(in);
finish();
}
});
}
private List<Model> getModel(ArrayList<HashMap<String, String>> songsListData) {
List<Model> list = new ArrayList<Model>();
for (HashMap<String, String> map : songsListData)
for (Entry<String, String> entry : map.entrySet())
if (entry.getKey() == "songTitle")
list.add(get(entry.getValue()));
// Initially select one of the items
//list.get(1).setSelected(true);
return list;
}
答案 0 :(得分:1)
您必须创建一个扩展SimpleAdapter的类适配器,以便您可以将所有哈希映射放在列表视图中。