列表视图ListView和ListActivity
来源:互联网 发布:网络实时监控软件下载 编辑:程序博客网 时间:2024/04/19 21:04
一、ListView是手机系统中使用很广泛的一种组件,它以垂直列表的形式显示所有列表项。创建列表视图有两种方式:
- 直接使用ListView进行创建
- 让Activity继承ListActivity(相当于该Activity显示的组件为ListView)
二、在获取列表视图后,要为其提供显示的列表项。ListView可以通过ListAdapter获取列表项。创建ListAdapter后,可通过setAdapter(adapter)方法为之提供adapter,并有adapter为其提供列表项。
三、Adapter接口及实现类
1、Adapter常用的实现类如下:
- ArrayAdapter
- SimpleAdapter
- BaseAdapter
2、ArrayAdapter用法及示例
package com.example.arrayadaptertest;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView list1=(ListView)findViewById(R.id.list1);String[] arr1={"孙悟空","猪八戒","沙和尚"};ArrayAdapter adapter1=new ArrayAdapter(this,R.layout.array_item,arr1);list1.setAdapter(adapter1);ListView list2=(ListView)findViewById(R.id.list2);String[] arr2={"Java","android","Spring","haha"};ArrayAdapter adapter2=new ArrayAdapter(this,R.layout.array_item,arr2);list2.setAdapter(adapter2);}}
布局文件activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/list1" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="#f00" android:dividerHeight="2px" android:footerDividersEnabled="false" /> <ListView android:id="@+id/list2" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="#00f" android:dividerHeight="2px" android:footerDividersEnabled="true"/></LinearLayout>布局文件array_item.xml:
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24dp" android:padding="10px" > </TextView >这里ArrayAdapter的构造函数采用:
3、SimpleAdapter用法示例
该类只有一个构造函数:
第二个参数:该集合中的每个Map对象生成一个列表项
第三个参数:该参数应该是一个String【】类型的参数,该参数决定提取Map对象中哪些KEY对应的Value来生成列表项
第四个参数:该参数应该是一个ing【】类型的参数,该参数决定填充哪些组件;
代码示例:
package com.example.simpleadaptertest;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {private String[] names={"虎头","弄玉","李清照","李白"};private String[] descs = { "可爱的小孩", "一个擅长音乐的女孩", "一个擅长文学的女性", "浪漫主义诗人"};private int[] imageIds ={ R.drawable.tiger , R.drawable.nongyu, R.drawable.qingzhao , R.drawable.libai};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();for(int i=0;i<names.length;i++){Map<String,Object> listItem=new HashMap<String,Object>();listItem.put("header", imageIds[i]);listItem.put("personName", names[i]);listItem.put("desc", descs[i]);listItems.add(listItem);}SimpleAdapter simpleAdapter=new SimpleAdapter(this,listItems,R.layout.simple_item,new String[] {"personName","header","desc"},new int[] {R.id.name,R.id.header,R.id.desc});ListView list=(ListView)findViewById(R.id.list1);list.setAdapter(simpleAdapter);list.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubSystem.out.println(names[position]+"被单击了");}});}}
</pre><pre class="java" name="code">4、BaseAdapter用法示例:需要重写它的一些方法;
示例:
package com.example.baseadaptertest;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView list=(ListView)findViewById(R.id.list);BaseAdapter baseAdapter=new BaseAdapter(){@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 40;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLinearLayout line=new LinearLayout(MainActivity.this);line.setOrientation(0);ImageView imageView=new ImageView(MainActivity.this);imageView.setImageResource(R.drawable.ic_launcher);TextView text=new TextView(MainActivity.this);text.setText("第"+(position+1)+"个列表项");text.setTextSize(20);line.addView(imageView);line.addView(text);return line;}};list.setAdapter(baseAdapter);}}
1 0
- 列表视图ListView和ListActivity
- 列表视图(ListView)和 ListActivity
- android学习--视图列表(ListView和ListActivity)
- 列表视图(ListView)和ListActivity——ArrayAdapter
- Android列表视图ListView和ListActivity-android学习之旅(二十四)
- Android练习-----列表视图(ListView)(通过继承ListActivity实现列表视图)
- ListActivity和ListView
- ListView和ListActivity
- ListView列表视图的介绍和使用
- C# ListView(列表视图)
- Android ListView 列表视图
- 列表视图控件ListView
- 列表视图ListView之一
- 列表视图ListView
- ListView列表视图控件
- ListView 列表视图
- ListView 列表视图
- 列表视图(ListView)
- 根据标示符将字符串 截成数组
- NGUI图集Atlas制作简介
- java日志组件介绍(common-logging,log4j,slf4j,logback )
- 数字雨
- poj1887
- 列表视图ListView和ListActivity
- 关于Android中工作者线程的思考
- Linux指令--ping
- FOJ 2092 收集水晶
- Python学习笔记——内置的数据结构
- 3dsmax的模型优化技巧
- 利用百度地图API实现gps坐标到百度坐标的批量坐标转换(如1000个点)
- H5 缓存机制浅析 移动端 Web 加载性能优化
- 好友推荐策略