[android]5.listview组件的使用(重要!)

浏览:
字体:
发布时间:2013-12-20 16:18:27
来源:

一、Listview的使用:

1、Listview是可以存放其他组件的容器。

①Listview想要显示条目要调用listview.setAdapter方法设置一个适配器。

②、listview需要被告诉显示多少个条目。

③、指定listview中每个条目显示什么样子。

 

//获取ListView空间:

ListViewlv= (ListView) this.findViewById(R.id.lv);

 

// 要想设置listview的显示的内容 就需要把listview的数据适配器给设置进去

lv.setAdapter(new MyAdapter());

 

//给listview的每一个条目注册点击事件.

//setOnItemClickListener方法参数为:ClickListener接口的子类

lv.setOnItemClickListener(newOnItemClickListener() {

//点击条目执行参数(listview对象,当前点击条目的view对象,位置,行号)

public voidonItemClick(AdapterViewparent, View view,

intposition, long id) {

//获取适配器中getItem()方法的返回值。

lv.getItemAtPosition(position);

//获取适配器中getItemId方法的返回值。

lv.getItemIdAtPosition(position);

}

});

 

 

2、自定义适配器类,继承BaseAdapter类。

publicclass MyAdapter extends BaseAdapter{

 

/**

* 告诉listview显示多个条目

*/

@Override

public int getCount() {

return5;

}

 

 

/**

* 返回每一个条目对应的对象。

*/

@Override

public Object getItem(int position) {

returnnull;

}

 

 

/**

* 返回每一个条目对应的编号,

*/

@Override

public long getItemId(int position) {

returnposition;

}

 

/**

* 设置listview每一个条目显示成什么样子,并返回每个组件。

* 这个方法会被调用多少次?

* 方法参数1:当前条目显示的位置,从0开始

*方法的返回值是:view对象。

*/

@Override

public View getView(int position, ViewconvertView, ViewGroup parent) {

if(position==0){//第一个位置。

//创建TextView 对象。

TextViewtv = new TextView(DemoActivity.this);

tv.setText("我是第一个textview");

returntv;

}

if(position==1){

//创建图片view

ImageView iv = newImageView(DemoActivity.this);

iv.setImageResource(R.drawable.ic_launcher);

return iv;

}

TextViewtv1 = new TextView(DemoActivity.this);

tv1.setText("我是textview"+position);

returntv1;

}

}

}

二、系统提供的适配器:

1、SimpleAdapter类:

ListView lv = (ListView) this.findViewById(R.id.lv);

LayoutInflater inflater = (LayoutInflater)getSystemService(

LAYOUT_INFLATER_SERVICE);

datas =new ArrayList>();

 

for(Person p : persons){

Map map = newHashMap();

map.put("name", p.getName());

map.put("phone", p.getPhone());

datas.add(map);

}

//设置适配器

lv.setAdapter(new SimpleAdapter(this, datas,

R.layout.item,

new String[]{"name","phone"},

newint[]{R.id.tv_name,R.id.tv_phone}));

 

SimpleAdapter 类构造函数的参数:

参数1:上下文,

参数2:数据,list集合中是map集合。List>

参数3:条目显示的布局,布局对应的资源文件。

参数4:对象的属性,map中作为key的值。

参数5:组件的id的int数组。

2、ArrayAdapter类:

lv.setAdapter(new ArrayAdapter(this,R.layout.item,

R.id.tv_name,new String[]{"张三","李四","王五"}));

三、布局填充器的使用:

1、填充器,将布局的xml中的布局转成view对象:

2、获取布局填充器对象:

LayoutInflater inflater = (LayoutInflater)getSystemService(

LAYOUT_INFLATER_SERVICE);

 

//将布局文件转成view对象的的方法,参数(布局的xml文件, 是否独立的参数)

//R.layout.item:对应layout目录下的item.xml文件。

 

View view =inflater.inflate(R.layout.item, null);

//获取view对象中的id为tv_name的组件。

TextView tv_name= (TextView) view.findViewById(R.id.tv_name);

 

3、layout目录下的item.xml文件内容为:

 

 

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:orientation="vertical" >

 

android:id="@+id/tv_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="姓名"

android:textAppearance="?android:attr/textAppearanceLarge"/>

 

android:id="@+id/tv_phone"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="电话号码"

android:textSize="18sp"

/>

 

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();