我正在开发一个需要自定义列表视图的Android应用程序。
我需要一个自定义列表视图,如下所示:
每当我点击扬声器按钮时,它会播放它所属项目的内容。
我不知道listview会有多少项,所以我想知道如何命名所有扬声器按钮以及如何获取任何按钮的相应内容!
有什么想法吗?
谢谢!
答案 0 :(得分:1)
您需要通过扩展BaseAdapter
或ArrayAdapter
类来创建自定义适配器类。
创建自定义适配器类后,重写getView()
方法。
您可以查看以下链接:
或者您可以在我的博客上查看ListView类别。
答案 1 :(得分:1)
您也可以使用以下方法。
首先定义列表视图和您想要的音乐数组列表
List<HashMap<String, String>> MusicArray;
ListView MusicList;
现在初始化MusicArray和MusicList,并将歌曲列表的值分配到MusicArray。
现在使用xml文件
创建自定义单元格布局然后创建自定义类ViewHolder,它将布局xml文件。
class ViewHolder {
TextView SongName, SongDescription;
int id;
}
然后现在创建Custom_Music_List,它将扩展BaseAdapter,如下所示。
public class Custom_Music_List extends BaseAdapter {
Context contex;
ViewHolder holder;
List<HashMap<String, String>> MusicItems;
TextView SongName, SongDescription;
public Custom_Music_List(Context context,
List<HashMap<String, String>> MusicArray) {
contex = context;
MusicItems = MusicArray;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return MusicItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) LayoutInflater
.from(contex);
convertView = inflater.inflate(R.layout.custom_music_cell, parent,
false);
holder.SongName = (TextView) convertView.findViewById(R.id.SongName);
holder.SongName.setText(MusicItems.get(position).get("SongName"));
holder.SongDescription = (TextView) convertView.findViewById(R.id.SongDescription);
holder.SongDescription.setText( + MusicItems.get(position).get("SongDescription"));
}
return convertView;
}
}
然后按照以下方式将适配器设置为MusicList,您将能够获得单击的相应列表项。
MusicList.setAdapter(new Custom_contact(ClassName.this, MusicArray));
MusicList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
// You will get position of row clicked from here using position, then try to access particular item from list using position
Log.i("Song Clicked", MusicArray.get(position).get("SongName"))
// Perform Action based upon position of song
}
});
答案 2 :(得分:0)