自定义Listview包含android中的各个按钮

时间:2013-05-20 03:28:41

标签: android android-listview

我正在开发一个需要自定义列表视图的Android应用程序。

我需要一个自定义列表视图,如下所示:

enter image description here

每当我点击扬声器按钮时,它会播放它所属项目的内容。

我不知道listview会有多少项,所以我想知道如何命名所有扬声器按钮以及如何获取任何按钮的相应内容!

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

您需要通过扩展BaseAdapterArrayAdapter类来创建自定义适配器类。

创建自定义适配器类后,重写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)

根据@Paresh Mayani的说法,你必须创建自定义适配器。

您可以从here找到演示或参考链接。

如果您发现任何问题,可以按照您的要求实施,然后告诉我。