0

こんにちは、私は Android プログラミングが初めてで、助けが必要です。HashMap オブジェクトで構成されるリスト ビューがあります。これらの hashMap オブジェクトは、チェック ボックスをオンにすることで選択できます。(基本的にはチェックボックスリストがあります)。私がやろうとしているのは、ListView でチェックされているすべての HashMap オブジェクト (または項目) を ArrayList に格納することです。次に、ボタンが押されたときに、この arrayList を別のアクティビティに渡したいと思います。文字列データを格納する例をいくつか見てきましたが、「チェック済み」の HashMap オブジェクトを listView に格納して ArrayList に格納する方法について助けが必要です。したがって、最後に必要なのは、リストでチェックされたオブジェクト (アイテム) で構成される ArrayList だけです。

プログラムの目標: ユーザーがカテゴリに基づいて曲を選択し、独自のカスタム プレイリストを作成できるようにする。ユーザーには 1 つのカテゴリの曲が表示されます。ユーザーはそのカテゴリから必要な曲を選択し、[次へ] ボタンを押して、新しいカテゴリの曲を表示する新しいアクティビティに移動します。各カテゴリで、選択内容を保存し、アクティビティ (カテゴリ) からアクティビティ (カテゴリ) に渡そうとしています。しかし、通過は機能していません。私は何か違うことをしているかもしれません。何をどのように行うかについてのアドバイスが必要です。-サンクス

いくつかのコード: 私が知っている最も整理されたものではありません。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;
      }
4

1 に答える 1

1

すべてのハッシュ マップをリスト ビューに配置できるように、SimpleAdapter を拡張するクラス Adapter を作成する必要があります。

于 2013-07-04T09:46:41.710 に答える