2011-07-01 11 views
0

私はリストビューに25種類のアイテムがあります。アイテムをクリックすると、対応するサウンドファイルが配列に追加されます(インデックスは0から始まります)。さらに多くのアイテムが選択されると、対応するサウンドファイルが配列の次のインデックスに追加されます。そのため、再生ボタンを押すと、インデックスが0になるまで、インデックス0に関連付けられたサウンドファイルが再生され、インデックス1にはサウンドが再生されます。その少しの(おそらく不必要な)背景情報で、現在再生中のアイテムのリストビューに画像を追加するにはどうすればよいですか? iPodのように、現在再生中のサウンドの行の右側にアイコンを表示したい。私はアイコンがあり、それを表示することはできますが、再生するサウンド/配列インデックスに基づいて、どの行を表示するかをわかりません。私はlistviewsに画像を追加するためのチュートリアルを読んだことがありますが、特定の行にただ一つの画像を追加することについては何もありません。リストビューの特定の行にアンドロイド表示イメージ

答えて

1

問題を解決するには、抽象メソッドをオーバーライドしてBaseAdapterという独自のサブクラスを実装する必要があると思います。 SimpleAdapterとSimpleCursorAdapterのように、新しいアダプタはデータ(あなたのケースのサウンドファイル)をリストにバインドしますが、BaseAdpaterはリストの各位置にどのような種類のビューを表示し、適切なリストを生成できるかを見つけることができますアイテムの表示。

必要に応じて、BaseAdapterのオーバーライドメソッドが必要です。最も重要なのは以下のとおりです。あなたの場合は

int getViewTypeCount(); 

、リスト項目の2種類含まれています。演奏中に演奏かどうかを、ので、この方法は、あなたは、いくつかのロジックを置く必要がある。2.

int getItemViewType(int position); 

を返す必要がありますここでパラメータの位置にあるサウンドファイルが再生されているかどうか確認します。 positionの項目が再生されている場合は、TYPE_PLAYINGのような定数のintを返す必要があります。そうでなければ、TYPE_NONPLAYINGを返します(もちろん、これらの定数を先に定義する必要があります)。

  1. TYPE_PLAYINGまたはTYPE_NONPLAYING

  2. のGet Aのいずれか、位置のアイテムの種類を探す:

    View getView(int position, View convertView, ViewGroup parentview); 
    

    この方法が最もTODOのを持っているこれは、私はあなたが以下の手順に従ってすることができると思いますLayoutInflaterのインスタンスで、異なるレイアウトファイルを2つの異なるタイプのアイテムに展開します。TYPE_PLAYINGアイテムには、アイテムの対応するファイルが再生中であることを示すイメージが含まれている必要があります。 LayoutInflaterを取得するには、Context変数が必要です。 Contextメンバをアダプタで宣言し、アダプタのコンストラクタで初期化できます。

  3. 各ファイルのバインドその他の情報:ファイル名、時間の長さなど

再生中のファイルをリストアイテムまたは他の相互作用をクリックすることで変更された場合、BaseAdapterのnotifyDatasetChangedを呼び出すことを忘れないでください()メソッドを呼び出してリストをリフレッシュします。

5月が役立ちます。

関連する問題