我在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 。
提前谢谢。
答案 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添加到一个字符串中并使用单个适配器或使用两个单独的列表。