0

シンプルなアダプターにロードしているハッシュマップがあります

public static ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String,    String>>();

....
    musiclist = (TextView) getView().findViewById(R.id.checkTextView);
    filelv = (ListView)getView().findViewById(R.id.FileList);
    filelv.setItemsCanFocus(false);
    filelv.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);

    //if (trackcount>previousTrackCount){
    ListAdapter playlistadapter = new SimpleAdapter(getActivity().getApplicationContext(), songsList, R.layout.file_view,
                new String[] { "songTitle","songAlbum", "songPath" }, new int[] { R.id.checkTextView, R.id.text2, R.id.text3 });
    filelv.setAdapter(playlistadapter);

これは完全に機能し、リストビューに 3 つの値がすべて表示されます。

ただし...各リスト項目の2行目が以下のようになるように文字列を連結できるようにしたい

songAlbum(ソングアーティスト)

例: There is Noting Left to Lose (Foo Fighters)

ListAdapter を次のように変更すると、2 行目が空白になります

ListAdapter playlistadapter = new SimpleAdapter(getActivity().getApplicationContext(), songsList, R.layout.file_view,
                new String[] { "songTitle","songAlbum" + "(" + "songArtist" + ")", "songPath" }, new int[] { R.id.checkTextView, R.id.text2, R.id.text3 });

すべての文字列をテストして、データが含まれていることを確認しました。

提案してください!

4

1 に答える 1

0

別のテキストボックスを追加する必要があります。そして、以下のコードを使用してください.もちろん、4つのキーすべてを含むハッシュマップが必要です。

SimpleAdapter playlistadapter = new SimpleAdapter(getActivity().getApplicationContext(), songsList, R.layout.file_view,
                new String[] { "songTitle","songAlbum", "songartist","songPath" }, new int[] { R.id.checkTextView, R.id.text2, R.id.text3, R.id.text4 });

playlistadapter.setViewBinder(new SimpleAdapter.ViewBinder(){
    boolean setViewValue(View view, Object data, String textRepresentation){
            if(view.getId () == R.id.songartist){
                view.setText("("+textRepresentation+")");
            }
    }
});
于 2012-09-15T17:10:08.847 に答える