热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

androidlistview进阶实例分享

这篇文章主要介绍了androidlistview进阶实例分享,具有一定借鉴价值,需要的朋友可以参考下

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

目录结构:

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<&#63;> 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 

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

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
   
     
     
     
   
   
 

结果展示

总结

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


推荐阅读
  • Servlet过滤器入门:实现与配置
    本文介绍如何在Java Web应用中实现和配置Servlet过滤器,通过实现`javax.servlet.Filter`接口来创建过滤器,并详细说明其在web.xml文件中的配置方法。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 探讨HTML中的DIV样式难题
    本文深入分析了HTML中常见的DIV样式问题,并提供了有效的解决策略。适合所有对Web前端开发感兴趣的读者。 ... [详细]
  • 本文详细介绍了如何在Android应用中使用GridView组件以网格形式展示数据(如文本和图像)。通过行列布局,实现类似矩阵的数据展示效果。 ... [详细]
  • PHP 中 preg_match 函数的 isU 修饰符详解
    本文详细解析 PHP 中 preg_match 函数中 isU 修饰符的具体含义及其应用场景,帮助开发者更好地理解和使用正则表达式。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 在本问题中,游戏的每一步状态均可以视为原始序列的一个子序列。通过定义一个动态规划函数 d(i, j),表示在最优策略下,先手玩家从原序列的第 i 个元素到第 j 个元素之间所能获得的最大分数。 ... [详细]
  • 初探SoloPi:一款强大的Android自动化测试工具
    SoloPi是一款由支付宝开发的无线化、非侵入式且无需Root的Android自动化测试工具。它提供了录制回放、性能测试和一机多控三大核心功能,极大地提高了测试开发人员的工作效率。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
author-avatar
彼岸花2011的冬天_290
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有