Listview组件非常重要,4分之一的时间都是在搞这个,还是通过上一节的数据库,写个for循环,插入50条数据。

先使用笨方法显示数据,根布局LinearLayout 定义一个id,在activity里面获取这个id。

获取PersonDao对象,调用dao对象的查询全部的方法,得到一个list集合的数据。

遍历这个集合,遍历中调用person实体类对象的toString()方法,得到一条记录的字符串。

遍历中实例化TextView对象,调用TextView对象的setText()方法,把一条信息放进去。

调用LinearLayout对象的addView(child)方法,child参数就是子view对象

笨方法代码:

        LinearLayout lv=(LinearLayout) findViewById(R.id.lv);PersonDao dao=new PersonDao(this);List<Person> persons=dao.select();for(Person person:persons){TextView tv=new TextView(this);tv.setText(person.toString());lv.addView(tv);}

此时屏幕高度不够,超出去的信息会直接隐藏,系统给提供了一个组件叫ScrollView可以上下滚动,包裹一下LinearLayout,此时会提示命名空间那里错误,把命名空间放在SorollView里,指定宽度和高度都是填充父窗体

当数据量比较大时,这样直接new出无数对象很消耗资源,应该是在滑动过程中动态new出组件对象,超出视线就销毁掉,这个时候引入了新的控件ListView

获取ListView对象,通过findViewById()方法,调用ListView对象的setAdapter(adapter)方法设置数据绑定到ListView,参数是一个ListAdapter接口类型,我们要实现这个接口,把实现类对象传进去,定义一个私有的内部类实现ListAdapter,这时会要求实现几十个方法,太多了,系统为我们提供了一个实现类BaseAdapter,默认的实现类大部分都是以BaseXxx,SimpleXxx,DefaultXxx开头

BaseAdapter是一个抽象类,要实现他的抽象方法,内部类继承BaseAdapter实现以下方法

getCount(),返回int数据的条数,把我的数据集合定义成成员属性,调用List集合size()方法

getItem(),

getItemId()

getView(position,) 控制索引位置的View对象,position是当前集合的索引,

在这个方法中,我们可以实例化TextView对象,需要传入上下文对象,使用getApplicationContext()获取上下文,调用TextView对象的setText(),数据是List集合调用get()方法,传入索引position获得,返回那个TV对象。在这个方法中Log.i()打印日志可以看到只会生成视线范围内的View对象。

activity代码:

package com.tsh.database;import java.util.List;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;import com.tsh.database.dao.PersonDao;
import com.tsh.database.domain.Person;public class MainActivity extends Activity {private List<Person> persons;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView lv=(ListView) findViewById(R.id.mylist);PersonDao dao=new PersonDao(this);persons=dao.select();lv.setAdapter(new MyAdapter());}private class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {// TODO Auto-generated method stubreturn persons.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Log.i("MainActivity", "生成对象"+position);TextView tv=new TextView(getApplicationContext());Person person=persons.get(position);tv.setText(person.toString());return tv;}}
}

[android] listview入门相关推荐

  1. Android基础入门教程——2.4.8 ListView Item多布局的实现

    Android基础入门教程--2.4.8 ListView Item多布局的实现 标签(空格分隔): Android基础入门教程 本节引言: 本节是ListView这个小节的最后一节,给大家带来的是L ...

  2. Google Android开发入门与实战

    Google Android开发入门与实战 [作 者]靳岩;姚尚朗 [同作者作品] [作译者介绍]  [出 版 社] 人民邮电出版社     [书 号] 9787115209306  [上架时间] 2 ...

  3. 《Google Android 开发入门与实战》

    <Google Android 开发入门与实战>(含1张DVD光盘) 市 场 价:¥55 书 号:9787115209306 出版日期:2009 年6月 开 本:16开 页码:340 [内 ...

  4. Google Android开发入门与实战 视频教程 源代码 游戏应用开发 传送门

    Google Android开发入门与实战 视频教程 视频目录 http://www.youku.com/playlist_show/id_5098662.html http://www.youku. ...

  5. 最新Android基础入门教程目录(完结版)

    第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...

  6. Android基础入门视频培训教程-刘志远-专题视频课程

    Android基础入门视频培训教程-146257人已学习 课程介绍         Android基础入门视频培训课程,该教程内容涵盖Android入门开发基本技能(环境搭建.Lineralayout ...

  7. Google Android开发入门与实战(china-pub首发免运费)

    Google Android开发入门与实战(china-pub到货首发免运费) [作 者]靳岩;姚尚朗 [同作者作品] [作译者介绍]  [出 版 社] 人民邮电出版社     [书 号] 97871 ...

  8. Android基础入门教程——2.4.7 构建一个可复用的自定义BaseAdapter

    Android基础入门教程--2.4.7 构建一个可复用的自定义BaseAdapter 标签(空格分隔): Android基础入门教程 本节引言: 如题,本节给大家带来的是构建一个可复用的自定义Bas ...

  9. Android基础入门教程——2.4.3 BaseAdapter优化

    Android基础入门教程--2.4.3 BaseAdapter优化 标签(空格分隔): Android基础入门教程 本节引言: 上一节中我们学习了如何来使用一个ListView以及自定义一个简单的B ...

最新文章

  1. 什么是推理统计(inferential statistics)?
  2. 电子计算机是一种精准的仪器,常见的八种无损检测仪器
  3. 计算机组成原理:储存系统和结构
  4. Symantec防病毒企业版10.1部署方法一
  5. [Leedcode][JAVA][面试题 08.11][硬币][动态规划]
  6. Java在程序设计题目中的妙用
  7. Linux 内核第一宏
  8. leetcode 730 Count Different Palindromic Subsequences
  9. 计算机网络常见面试题
  10. 视觉媒体通信作业记录(四)视频网络传输
  11. 遥感信息分析与应用期末复习题
  12. excel vsto 功能菜单定义
  13. 如何在南方CASS中内插高程点
  14. 第三次科技革命(一)
  15. 公司电脑企业微信连接不上服务器,企业微信登不上原因是什么?官方回应:服务器升级的锅!...
  16. Pycharm修改图片大小
  17. FZU 1968 Twinkling lights III
  18. docker查看内部tcp长连接
  19. 使用GDAL工具对OrbView-3数据进行正射校正
  20. Apache 解析漏洞

热门文章

  1. CNN:测试一下YoloV3
  2. 三维重建13X:一些算法试题-今日头条AI-Lab
  3. 三维重建10:点云配准和点云匹配
  4. 服务器配置PHP系统,php用什么系统做服务器配置
  5. QT qml---- loader使用方法
  6. spring @bean注解
  7. RHEL 6.6安装桌面环境GNOME
  8. git show HEAD^num和个git show HEAD~num的区别
  9. 管理表空间和数据文件——维护表空间——设置默认表空间和删除表空间和删除数据文件盒临时文件...
  10. spring boot configuration annotation processor not found in classpath问题解决