您的位置:首页 > 移动开发 > Android开发

android之ListView使用

2015-06-06 17:39 357 查看
android之ListView

ListView是android中比较常见并较为复杂的控件之一,它既有默认的模式,又可以实现自定义,通过该控件,可以使UI交互更加多样化,更加方便。



实现过程分为三步:

在activity的layout中设置ListView控件,设置控件Id为 list;

新建一个Layout的XML文件,在当中设置每一个条目的模式;

在代码中创建一个List的Hashmap对象,以条目名称为key,存入每一个条目中的内容;

创建一个SimpleAdapter对象,将创建的List对象作为资源,新建的Layout作为参数,还有一个字符串数组,与一个int型数组的参数。设置adapter即可。

代码如下:

/*
 * 在onResume方法中设置ListView
 */
protected void onResume() {
    super.onResume();
    List<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();
//      通过工具栏FileUtils中的方法,得到本地文件的文件名与大小,显示在ListView中
    FileUtils fileUtils = new FileUtils();
    infos = new ArrayList<Mp3Info>();
    infos = fileUtils.getFileInfo("mp3/");
//  将从本地文件夹中得到的MP3信息存入list中
    for (Iterator<Mp3Info> iterator = infos.iterator(); iterator.hasNext();) {
        Mp3Info mp3Info = (Mp3Info) iterator.next();
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("mp3_name", mp3Info.getMp3name());
        map.put("mp3_size", mp3Info.getMa3size());
        list.add(map);
    }
//  设置这个simpleAdapter
    SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.mp3info_item,
            new String []{"mp3_name","mp3_size"}, new int [] {R.id.mp3_name,R.id.mp3_size});

    setListAdapter(simpleAdapter);
}


这是最简单的listView的使用方式,listView还可以设置更多的属性,条目里可以有button,imageView等各种控件,只要在设置adapter当中的那个布局文件中设定这些控件,然后在字符数组中写上这些控件的id,整型数组中依次写上这些控件在R文件中的编号就好。

简单的Layout文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingLeft="10dp" 
android:paddingRight="10dp" 
android:paddingTop="1dp"
android:paddingBottom="1dp">
<TextView 
    android:id="@+id/mp3_name"
    android:layout_width="180dp" 
    android:layout_height="30dp"
    android:textSize="20sp"/>
<TextView 
    android:id="@+id/mp3_size"
    android:layout_width="180dp" 
    android:layout_height="30dp"
    android:textSize="20sp"/>
</LinearLayout>


在listView中,每一个条目是可以有点击响应事件的,点击某个条目,类似于点击一个button,为其设置点击响应事件就可以了。

/**
 * ListView的点击响应事件,将点击的条目信息传递到新的播放界面的Activity中
 */
@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        Mp3Info mp3Info = infos.get(position);
        Log.i("Local", mp3Info.toString());

        Intent playerintent = new Intent();
        playerintent.putExtra("mp3Info", mp3Info);
        playerintent.setClass(LocalMp3ListActivity.this, PlayerActivity.class);
        startActivity(playerintent);
    }

}


复写ListView的onListItemClick的函数就可以了,函数传入的参数有点击的条目中的控件id,是哪个控件,还有该条目在ListView中的顺序。根据我们的需要选择合适的参数使用,就可以达到我们想要的响应目的。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <ListView 
            android:id="@+id/android:list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:drawSelectorOnTop="false">

        </ListView>

    </LinearLayout>

</LinearLayout>


在主界面中设置的Layout。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: