文档章节

一个android记事本的学习过程记录! (二)

小白杨啦啦
 小白杨啦啦
发布于 2016/05/01 20:38
字数 872
阅读 303
收藏 3

在实现了保存文字的功能以后,接下来我们要实现在主页面中的ListView中显示出我们已经保存了的信息;既然要用ListView,则一定要有一个适配器adapter去添加内容,我们新创建一个MyAdapter去继承BaseAdapter,使用BaseAdapter自带的getView方法在ListView中的每一个Item中显示从数据库中读取到的每条信息;

那么我们现在思考一下我么现在所面临的问题有哪些:

  1. 在ListView中的Item中显示数据的格式,需要我们创建一个自定义的View去接受内容;需要新建一个Xml文件;

  2. 既然需要从数据库中读取数据后显示到ListView中,那么就要创建一个查询数据库的方法,将查询到的数据传递给adapter中处理;

  3. 将查询到的数据库中的每一行的数据显示到不同的Item中;

现在问题列出来了,就到了解决问题的时候了;

1.    我们先创建一个Call.xml文件,把View布局排列好,两个ImageView,一个用来显示图片的缩略图,一个用来显示视频的缩略图,两个TextView,一个用来显示内容,一个用来显示时间;

2.    那么现在我们在主文件中创建一个方法,从数据库中读取数据的方法,然后将数据交给adapter处理;

Cursor cursor; //创建一个游标
	private NotesDB notesDB;  //实例一个数据库对象
	private SQLiteDatabase dbReader;  //操作数据库读写的方法
	//实例化数据库;获取数据库读的权限
    	notesDB=new NotesDB(this);  
    	dbReader=notesDB.getReadableDatabase();	
	//创建方法查询数据库!
	public void selectDB(){
	        //将数据库中的每一行数据都保存在游标中
		cursor=dbReader.query(notesDB.TABLE_NAME, null, null, null, null, null, null);
		myAdapter=new MyAdapter(this, cursor);
		lv.setAdapter(myAdapter);
	}

3.   现在我们处理MyAdapter中的事物,这个部分也是最麻烦的;

    BaseAdapter中有四个重写的方法;前三个比较容易;

private Context context;  //将上下文传入
	private Cursor cursor;  //承接已经接收数据库数据信息的游标
	
	LinearLayout layout;  //将xml文件转换为一个view
	 
	public MyAdapter(Context context,Cursor cursor)
	{
		// TODO Auto-generated constructor stub
		this.context=context;
		this.cursor=cursor;
	}
	
	@Override
	public int getCount()  
	{
		// TODO Auto-generated method stub
		return cursor.getCount();
	} //此方法返回游标中数据的个数

	@Override
	public Object getItem(int arg0)
	{
		// TODO Auto-generated method stub
		return cursor.getPosition();
	} //此方法得到了此时操作第arg0个Item

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

我们将在getView方法中实现添加数据的功能;

@Override
	//将结果返回到activity中的listview中
	public View getView(int arg0, View arg1, ViewGroup arg2)
	{
		// TODO Auto-generated method stub
		//使用LayoutInflater对象将一个布局文件转换为视图;
		LayoutInflater inflater=LayoutInflater.from(context);
		layout=(LinearLayout) inflater.inflate(R.layout.cell, null);
		//实例化在call.xml中添加的控件;
		TextView contenttv=(TextView) layout.findViewById(R.id.list_content);
		TextView timetv=(TextView) layout.findViewById(R.id.list_time);
		ImageView imgtv=(ImageView) layout.findViewById(R.id.list_img);
		ImageView rediotv=(ImageView) layout.findViewById(R.id.list_video);
		cursor.moveToPosition(arg0);  //游标移动到当前列
		//获取内容列,将游标中当前位置的所有数据保存到变量中
		String content=cursor.getString(cursor.getColumnIndex("content"));
		String time=cursor.getString(cursor.getColumnIndex("time"));
		String url=cursor.getString(cursor.getColumnIndex("path"));
		String video=cursor.getString(cursor.getColumnIndex("video"));
		contenttv.setText(content);
		timetv.setText(time);
		imgtv.setImageBitmap(“”); //这是得到图片缩略图的方法,现先省略
		rediotv.setImageBitmap(“”); //这是得到视频缩略图的方法
		return layout;
	}

 在主程序中的activity的生命周期中的 protected void onResume(){}方法中,执行selectDB()方法;则可以发现保存的文字信息显示到ListView中了;



© 著作权归作者所有

小白杨啦啦
粉丝 0
博文 7
码字总数 4746
作品 0
漳州
程序员
私信 提问
Android adt bundle 开发环境配置及第一个“Hello world”程序运行

最近在学习Android 顺便记录下学习过程当作复习吧,这是写的第一篇正式博客。 一、jdk环境配置 二、android adt bundle 下载 三、安装SDK 四、模拟器及真机调试 五、第一个程序 Hello world!...

程序猿付显
2014/07/23
19.9K
0
Android学习——界面互调2

在Android中, 除了像前面我们说的弹出指定页面,系统还提供了一个机制,就是跨程序调用,这样可以大大提高系统复用度,比如,我们自己写一个打电话程序,我们可以调用系 统中自带的电话薄选...

红薯
2009/07/14
1K
0
Android framework——Activity的启动和创建

本人制作的app:1号密码 欢迎试用   最近学习Android相关知识,感觉仅仅了解Activity几个生命周期函数基本上没有任何意义的; 于是想深入了解一下Activity到底是怎么一回事怎么运行来的;里...

jackxu2015
2015/08/14
170
0
Android学习攻略:手把手教你循序渐进地学习Android知识

前言 如果你也学习Android,那么你大概率会看过我的文章。经常有读者给我留言:“该怎么学习Android?”、“日常学习Android的方法是什么”。 所以,今天,我将献上一份《Android学习指南》,...

Carson_Ho
04/24
0
0
图文详解Android Studio搭建Android集成开发环境的过程

有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环境,不...

查杰
2018/06/29
17
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部