android listview example,android listview进阶实例分享

上一篇android listview初步学习实例代码

目录结构:

7c1d6027ea5b071eb3c66987654d7fe8.png

MainActivity2

package com.example1.listviewpracticvce;

/*

* 本activity实现的功能:

* 将数据库中的数据用listview显示出来

*/

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

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/tvPid"

android:layout_width="70dp"

android:layout_height="50dp"

android:gravity="center"

android:textSize="15sp"

/>

android:id="@+id/tvPname"

android:layout_width="190dp"

android:layout_height="50dp"

android:gravity="center"

android:textSize="15sp"

/>

android:id="@+id/ivPgender"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

person.xml

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

android:layout_width="70dp"

android:layout_height="wrap_content"

android:gravity="center"

android:text="编号"

android:textSize="20sp"

android:textStyle="bold"

/>

android:layout_width="190dp"

android:layout_height="wrap_content"

android:gravity="center"

android:text="姓名"

android:textSize="20sp"

android:textStyle="bold"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="性别"

android:textSize="20sp"

android:textStyle="bold"

/>

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"

/>

结果展示

4ef1d1b8cddf17838e234939df766d9b.png

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值