首页 > 系统 > Android > 正文

android listview进阶实例分享

2019-10-22 18:17:26
字体:
来源:转载
供稿:网友

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

目录结构:

android,listview实例,横向listview

MainActivity2

package com.example1.listviewpracticvce;/*  * 本activity实现的功能:  * 将数据库中的数据用listview显示出来  */import com.example1.listviewdao.PersonDAO;import android/293877.html">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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:orientation="horizontal"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   >   <TextView      android:id="@+id/tvPid"     android:layout_width="70dp"      android:layout_height="50dp"      android:gravity="center"     android:textSize="15sp"     />   <TextView     android:id="@+id/tvPname"     android:layout_width="190dp"     android:layout_height="50dp"     android:gravity="center"     android:textSize="15sp"     />      <ImageView     android:id="@+id/ivPgender"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     />     <!--       <TextView     android:id="@+id/ivPgender"     android:layout_width="wrap_content"     android:layout_height="50dp"     android:gravity="center"     android:textSize="15sp"     />     -->     </LinearLayout> 

person.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:orientation="vertical"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   >   <LinearLayout     android:orientation="horizontal"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     >     <TextView        android:layout_width="70dp"        android:layout_height="wrap_content"        android:gravity="center"       android:text="编号"       android:textSize="20sp"       android:textStyle="bold"       />     <TextView       android:layout_width="190dp"       android:layout_height="wrap_content"       android:gravity="center"       android:text="姓名"       android:textSize="20sp"       android:textStyle="bold"       />     <TextView       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="性别"       android:textSize="20sp"       android:textStyle="bold"       />   </LinearLayout>   <ListView     android:id="@+id/lvPerson"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:background="@drawable/bg"     android:scrollingCache="false"     android:divider="@drawable/line"     /> </LinearLayout> 

结果展示

android,listview实例,横向listview

总结

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


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表