一、添加一个带有ListView控件的LayOut,在Activity_main中直接添加就可以
<ListView
android:id="@+id/listview_mian"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
二、在MainActivity中声明和通过ID获取刚才添加的ListView
ListView lv = null;
lv = (ListView)findViewById(R.id.listview_mian);
三、建一个数据类ListCellData,用来存要在ListView中展示的数据
public class ListCellData {
private String name,sex;
private int age;
public ListCellData(String name,String sex,int age) {
// TODO Auto-generated constructor stub
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public int getAge() {
return age;
}
}
ArrayAdapter<ListCellData> studentsAdapter;
studentsAdapter = new ArrayAdapter<ListCellData>(this, android.R.layout.simple_list_item_1);
五、用ListView的setAdapter()方法将ListView与刚才初始化的Adapter进行绑定
lv.setAdapter(studentsAdapter);
用Adapter的add()方法,向ListView中添加数据,在里面直接添加ListCellData对象的话显示的是对象的toString方法,没有重写的话显示的是存储地址?,反正需要在ListCellData中重写toString()方法,才能显示自己想要展示的数据
studentsAdapter.add(new ListCellData("小明", "男", 22));
studentsAdapter.add(new ListCellData("安哥拉", "女", 12));
在类中重写toString():
@Override
public String toString() {
// TODO Auto-generated method stub
return getName()+"/"+getSex()+"/"+getAge();
}
完成上面的操作后就可以在ListView中展示类ListCellData中的对象信息的,下面介绍如何绑定点击列表项的事件:
一、MainActivity调用OnItemClickListener接口,重写其中的onItemClick()方法,这里面的四个参数只用到了Int类型的position,用Adapter的getItem()方法根据position返回列表项中ListCellData类型的数据,之后使用了Toast插件,用Toast的makeText()方法显示了刚才返回的ListCellData对象的详细信息:
public class MainActivity extends Activity implements OnItemClickListene
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
// TODO Auto-generated method stub 目前只用到了position
ListCellData data = studentsAdapter.getItem(position);
Toast.makeText(this, String.format("姓名:%s,性别:%s,年龄:%d。", data.getName(),data.getSex(),data.getAge()), Toast.LENGTH_SHORT).show();
}
二、最后在onCreate()方法中用lv的setItemClickListener()方法绑定事件触发器
lv.setOnItemClickListener(this);
PS:继承ListActivity后要使用setItemClickListener()方法要使用先getListView()获取列表:
getListView().setOnItemClickListener(this);