列表视图ListView和ListActivity

一、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 {

	@Override
	protected 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};
	
	@Override
	protected 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(){

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				System.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 {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ListView list=(ListView)findViewById(R.id.list);
		BaseAdapter baseAdapter=new BaseAdapter(){

			@Override
			public int getCount() {
				// TODO Auto-generated method stub
				return 40;
			}

			@Override
			public Object getItem(int position) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public long getItemId(int position) {
				// TODO Auto-generated method stub
				return position;
			}

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				// TODO Auto-generated method stub
				LinearLayout 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值