android——ListView实例

说实话,其实已经有段时间没有接触android开发了,不过这个学期也算是重新拾起了android开发,不过最近看到手机移动端开发应用这么火,自己也算是确定了以后以手机应用开发为主的发展方向吧。闲话不多说,直接切入正题:

大家都用过手机QQ应该知道,手机QQ上的好友列表用起来非常的方便,其实就是通过android中的一个控件listView来实现的,我们暂时先实现一个最简单的listView的例子(之后的扩展功能可以自己添加),如下图所示:
android——ListView实例

   首先我们要明确列表的显示需要三个元素:

1.ListVeiw用来展示列表的View;

2.适配器用来把数据映射到ListView上的中介;

3.数据 具体的将被映射的字符串,图片,或者基本组件。

   那么首先是主界面的XML文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ListViewActivity" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

 接下来是ListView列表中每一行item显示的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dp" >

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/abaose" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="40dp"
                android:text="TextView" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

   那么下面是最关键的一部分,ListView添加一个适当的适配器,以及适配器的使用都如下所示,为了方便阅读,特意自己写了一个适配器,继承BaseAdapter:

package com.pzw.listview;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ListViewActivity extends Activity {
	
	private List<String> mylist = new ArrayList<String>();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_list_view);
		ListView lv = (ListView) findViewById(R.id.listView);
		lv.setAdapter(new LvAdapter(mylist));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.list_view, menu);
		return true;
	}
	
	protected class LvAdapter extends BaseAdapter{
		private List<String> list;
		private LvAdapter(List<String> list){
			this.list = list;
			list.add("这是一个美女");
			list.add("这是一个帅哥");
			list.add("这是一个基佬");
			list.add("这是一个逗比");
		}
		
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list.size();
		}

		@Override
		public Object getItem(int arg0) {
			// TODO Auto-generated method stub
			return list.get(arg0);
		}

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

		@Override
		public View getView(int arg0, View arg1, ViewGroup arg2) {
			String str = list.get(arg0);
			View view = getLayoutInflater().inflate(R.layout.item_listview, null);
			TextView tv = (TextView)view.findViewById(R.id.textView1);
			tv.setText(str);
			return view;
		}
		
	}

}

 

 当然,这只是一个最简单的ListView的实现,如果你想要实现更加漂亮或者是更加酷炫的效果,可以在item_listview中随意添加各个组件,如果你觉得ListView上自带的分割线很丑的话,也可以在java代码中加上setDividerHeight(0),这样子就可以不显示自带的分割线啦~~