您的位置:首页 > 产品设计 > UI/UE

Android UI组件--ListView(1)

2016-07-27 20:19 435 查看
ListView是一个公共类,是一种View。它展示了一些垂直排列可以滚动的物件,这些物件通过与这个ListView相关联的ListAdapter决定的。
首先现在XML文件中加入一个ListView。
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/ListView"
android:layout_gravity="center_horizontal" />
然后在程序中声明一个ListView
private ListView lv;通多id定位找到当前布局中要使用的ListView
lv=(ListView) findViewById(R.id.ListView);

-------------------------------------------------------------------------------------------------------------------------------------------------

ListView的数据项需要由Adapter来配适,Adapter的类型有很多种,其中ArrayAdapter是最基本的一种。ArrayAdapter是一个类,它继承自android.widge.BaseAdapter,它的元素如果是布局文件的话,只能是TextView。

1)声明一个ArrayAdapter
private ArrayAdapter<ListData> adapter;
其中ListData是一个自己写的类,它里面包含了ListView中每一项中包含的数据,比如列表中的每一个元素是一个用户,那么就有用户姓名,性别和年龄。注意要用toString方法规定在列表上呈现的文字。比如这里列表中只显示姓名。
public class ListData {
public ListData(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

private String name="SB";
private String gender="male";
private int age=0;

@Override
public String toString() {
return getName();
}
}
2)new一个ArrayAdapter(使用系统默认simple_expandable_list_item_1)
adapter=new ArrayAdapter<ListData>(this,android.R.layout.simple_expandable_list_item_1);
3)为一个ListView设置一个Adapter
lv.setAdapter(adapter);
4)在一个ArrayAdapter中设置数据
for (int i=0;i<=19;i++)
{
adapter.add(new ListData("SB"+i,"male",i+5));
}这里用到了ListData的构造方法。

-------------------------------------------------------------------------------------------------------------------------------------------------

ListView的数据配适完毕以后,用户点击某一个条目时,程序应作出相应的回应,需要用监听器和事件处理器来实现。在ListView中,我们使用的是ListView的setOnItemClickListner方法设置监听器和对OnItemClickListner接口的实现来完成事件处理器。
1)设置监听器
lv.setOnItemClickListener(new MyListener());为lv设置监听器
2)完成事件处理器
class MyListener implements AdapterView.OnItemClickListener
{
public void onItemClick (AdapterView<?> parent, View view, int position, long id)
{
ListData data=adapter.getItem(position);
Toast.makeText(getApplicationContext(), String.format("name:%s gender:%s age:%d",data.getName(),data.getGender(),data.getAge()),Toast.LENGTH_SHORT).show();
}
}当点击事件发生时,触发onItemClick方法。
adapter.getItem(position)可以得到点击的元素。
toast是一种比较小的组件,它可以短时间内给用户弹出一点小消息,它的makeText方法的三个参数依次是上下文(一般为this或者getApplicationContext()),显示的内容(可以用format),显示时间。最后把它show()出来

-------------------------------------------------------------------------------------------------------------------------------------------------

相关官方文档的位置:
ListView:
https://developer.android.com/reference/android/widget/ListView.html
ArrayAdapter:
https://developer.android.com/reference/android/widget/ArrayAdapter.html
OnItemClickListener:

https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
Toast: https://developer.android.com/reference/android/widget/Toast.html#makeText(android.content.Context, int, int)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android listview