列表视图ListView和ListActivity

来源:互联网 发布:网络实时监控软件下载 编辑:程序博客网 时间:2024/04/19 21:04

一、ListView是手机系统中使用很广泛的一种组件,它以垂直列表的形式显示所有列表项。创建列表视图有两种方式:

  1. 直接使用ListView进行创建
  2. 让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);}}

总之,采用adapter时,可采用以上三种之一创建adapter,然后调用setAdapter即可!!!





1 0
原创粉丝点击