如何将两个适配器设置为列表?

时间:2011-09-15 10:28:46

标签: android

我在android工作。我正在创建一个音乐应用程序。在这个应用程序中,我想将歌曲的标题和艺术家的名字显示在列表中。     这是我的代码: -

 String[] title_of_song={"title1","title2","title3","title4","title5"};
 String[] artist_of_song={"artist1","artist2","artist3","artist4","artist5"};
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row_button, R.id.TextView_songName, title_of_song);


 ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, R.layout.row_button, R.id.TextView_byArtist, artist_of_song);

 list.setAdapter(adapter);
 list.setAdapter(adapter1); //**this is creating error**

这就是创建列表无法setAdapter两次的问题。所以请告诉我解决方案,这样我就可以为歌曲名称和艺术家名称设置 setAdapter 。              这是创建列表无法setAdapter两次的问题。所以请告诉我解决方案,这样我就可以为歌曲名称和艺术家名称设置 setAdapter

提前谢谢。

3 个答案:

答案 0 :(得分:1)

我不知道你想要实现什么目标。两个适配器都有相同的代码。为什么不创建具有两个适配器值的单个适配器。

刚刚看到您修改过的问题

创建一个自定义适配器并为具有两个文本视图的布局充气 - 一个用于艺术家,另一个用于歌曲。

class TaskAdapter extends ArrayAdapter{

    ArrayList artist, song;
    public TaskAdapter(ArrayList songs, ArrayList artist){
           this.artist = artist;
           this.song = songs;
    }       


    public TaskAdapter(Context context, int textViewResourceId ) {
        super(context, textViewResourceId);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View v = convertView;
        ViewHolder holder;
        if(v == null) {
            LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = li.inflate(R.layout.custom_list, null);
            holder = new ViewHolder();
            holder.taskId = (TextView)v.findViewById(R.id....);
            holder.taskDesc = (TextView)v.findViewById(R.id....);

            v.setTag(holder); 
        }
        else{
            holder = (ViewHolder)v.getTag();
        }

        holder.tArtist.setText(artist.get(position));

        holder.tSong.setText(song.get(position));           


        return v;
    }       

}   
static class ViewHolder {
    TextView tArtist;
    TextView tSong;     

}

答案 1 :(得分:1)

我建议将title-artist添加到一个字符串或任何xml中,并使用单个适配器为代码提供更大的灵活性并提高代码的可重用性。

答案 2 :(得分:0)

我建议将title - artist添加到一个字符串中并使用单个适配器或使用两个单独的列表。