栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

android listview进阶实例分享

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android listview进阶实例分享

上一篇android listview初步学习实例代码分享了一个listview初级实例,本文我们看看一个进阶实例。

目录结构:

MainActivity2

package com.example1.listviewpracticvce;

import com.example1.listviewdao.PersonDAO;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SimpleCursorAdapter.ViewBinder;
public class MainActivity2 extends Activity {
	ListView lvPerson;
	@Override 
	    protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.person);
		PersonDAO personDAO = new PersonDAO(this);
		Cursor cursor = personDAO.getPersons();
		//cursor类似一个指针 
		lvPerson = (ListView) findViewById(R.id.lvPerson);
		//SimpleCursorAdapter(context, layout,   c,   from,    to    ) 
		//     listview的布局    cursor 需要显示的列  在哪个控件中显示 
		//数组开头的列必须是"_id" 
		SimpleCursorAdapter adapter = new PersonAdapter(this, R.layout.person_item, cursor, 
		   new String[]{ "_id", "pname", "pgender" }, 
		   new int[]{ R.id.tvPid, R.id.tvPname, R.id.ivPgender });
		//     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.person_item, cursor,  
		//     new String[]{ "_id", "pname", "pgender" }, //要显示的列 
		//     new int[]{ R.id.tvPid, R.id.tvPname, R.id.ivPgender });//显示每行所用控件 
		//为了将性别显示为图片,这里复写了SimpleCursorAdapter这个类 
		lvPerson.setAdapter(adapter);
		lvPerson.setonItemClickListener(new onItemClickListener() 
		      {
			@Override 
			 public void onItemClick(AdapterView parent, View view, int position, long id) 
			 {
				Cursor cursor = (Cursor) parent.getItemAtPosition(position);
				Toast.makeText(getApplicationContext(), cursor.getString(1), Toast.LENGTH_sHORT).show();
			}
		}
		);
	}
}
//利用源代码定制 
class PersonAdapter extends SimpleCursorAdapter 
  {
	private Cursor mCursor;
	protected int[] mFrom;
	protected int[] mTo;
	private ViewBinder mViewBinder;
	public PersonAdapter(Context context, int layout, Cursor c, String[] from, int[] to) 
	    {
		super(context, layout, c, from, to);
		mCursor = c;
		mTo = to;
		findColumns(from);
	}
	@Override 
	    public void bindView(View view, Context context, Cursor cursor) 
	    {
		final ViewBinder binder = mViewBinder;
		final int count = mTo.length;
		final int[] from = mFrom;
		final int[] to = mTo;
		for (int i = 0; i < count; i++) 
		      {
			final View v = view.findViewById(to[i]);
			if (v != null) 
			 {
				Boolean bound = false;
				if (binder != null) 
				   {
					bound = binder.setViewValue(v, cursor, from[i]);
				}
				if (!bound) 
				   {
					String text = cursor.getString(from[i]);
					if (text == null) 
					     {
						text = "";
					}
					if (v instanceof TextView) 
					     {
						setViewText((TextView) v, text);
					} else if (v instanceof ImageView) 
					     {
						if (text.equals("男")) 
						{
							setViewImage((ImageView) v, String.valueOf(R.drawable.boy));
						} else 
						{
							setViewImage((ImageView) v, String.valueOf(R.drawable.girl));
						}
					} else 
					     {
						throw new IllegalStateException(v.getClass().getName() + " is not a " + " view that can be bounds by this SimpleCursorAdapter");
					}
				}
			}
		}
	}
	private void findColumns(String[] from) 
	    {
		if (mCursor != null) 
		      {
			int i;
			int count = from.length;
			if (mFrom == null || mFrom.length != count) 
			 {
				mFrom = new int[count];
			}
			for (i = 0; i < count; i++) 
			 {
				mFrom[i] = mCursor.getColumnIndexOrThrow(from[i]);
			}
		} else 
		      {
			mFrom = null;
		}
	}
}

DBOpenHelper

package com.example1.listviewdao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper 
{
	private static final int VERSION = 1;
	private static final String DBNAME = "data.db";
	private static final String PERSON="t_person";
	public DBOpenHelper(Context context) 
	  {
		super(context, DBNAME, null, VERSION);
	}
	@Override 
	  public void onCreate(SQLiteDatabase db) 
	  {
		db.execSQL("create table "+PERSON+" (_id varchar(4) primary key,pname varchar(20),pgender varchar(2))");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1001','张三','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1002','李四','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1003','王五','女')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1004','赵钱','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1005','孙李','女')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1006','周吴','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1007','郑王','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1008','冯陈','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1009','褚卫','女')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1010','蒋沈','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1011','韩杨','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1012','朱秦','男')");
		db.execSQL("insert into t_person (_id, pname, pgender) values ('1013','尤许','男')");
	}
	@Override 
	  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
	  {
	}
}

Person

package com.example1.listviewdao;
public class Person 
{
	private String pid;
	private String pname;
	private String pgender;
	public Person() 
	  {
		super();
	}
	public Person(String pid, String pname, String pgender) 
	  {
		super();
		this.pid = pid;
		this.pname = pname;
		this.pgender = pgender;
	}
	public String getPid() 
	  {
		return pid;
	}
	public void setPid(String pid) 
	  {
		this.pid = pid;
	}
	public String getPname() 
	  {
		return pname;
	}
	public void setPname(String pname) 
	  {
		this.pname = pname;
	}
	public String getPgender() 
	  {
		return pgender;
	}
	public void setPgender(String pgender) 
	  {
		this.pgender = pgender;
	}
	@Override 
	  public String toString() 
	  {
		return "pid=" + pid + ";pname=" + pname + ";pgender=" + pgender;
	}
}

PersonDAO

package com.example1.listviewdao;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class PersonDAO 
{
	private DBOpenHelper helper;
	private SQLiteDatabase db;
	public PersonDAO(Context context) 
	  {
		helper = new DBOpenHelper(context);
	}
	public Cursor getPersons(int start, int count) 
	  {
		db = helper.getWritableDatabase();
		Cursor cursor=db.query("t_person", new String[]{"_id","pname","pgender"}, null, null, null, null, "_id desc",start+","+count);
		return cursor;
	}
	public Cursor getPersons() 
	  {
		db = helper.getWritableDatabase();
		Cursor cursor=db.query("t_person", new String[]{"_id,pname,pgender"}, null, null, null, null, null);
		return cursor;
	}
	public long getCount() 
	  {
		db = helper.getWritableDatabase();
		Cursor cursor = db.rawQuery("select count(_id) from t_person", null);
		if (cursor.moveTonext()) 
		    {
			return cursor.getlong(0);
		}
		return 0;
	}
}

person_item.xml

 
   
   
   
   
 
        
 

person.xml

 
 
   
     
     
     
   
   
 

结果展示

总结

以上就是本文关于android listview进阶实例分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/156690.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号