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。
时间: 2024-10-13 12:25:33