ListView 是一个控件,一个在垂直滚动的列表中显示条目的一个控件,这些条目的内容来自于一个ListAdapter 。EditText Button TextView ImageView Checkbox 五大布局。

ListView的使用有点类似mvc的模式:

  model:bean

  view :listview

  control:adapter

LsitView的使用步骤:

1.布局写listview

2.找到listview

3.封装新闻数据到list集合中 ,目的是为adapter提供数据展示。

4.封装一个Adapter类继承BaseAdatper,写一个构造方法接受list集合数据,复写四个方法
  a.创建一个构造方法  
  b.封装getCount方法 
  c.getView方法: 
    c.1:复用convertview
      view = View.inflater(Context context, int resuorceId,ViewGroup root)
    c.2:找到view上的这些子控件,目的是将list集合中的bean数据一一对应设置给这些子控件

    c.3:找到内容:从list集合中获取postion条目上要显示的数据Bean

      NewsBean newsBean=list.get(position);
    c.4:设置内容:将获取的bean中的数据设置给这些子控件

 public View getView(int i, View convertview, ViewGroup viewGroup) {
View view=null;
//1 复用convertView优化listview,创建一个view作为getview的返回值的来显示一个条目
if(convertview!=null){
view=convertview;
}else{
view=View.inflate(context, R.layout.item_news_layout,null);//将一个布局文件转为view对象 //获取View对象方式2:通过LayoutInflater将布局转换成view对象
//view = LayoutInflater.from(context).inflate(R.layout.item_news_layout, null); //3:通过context获取系统服务得到一个LayoutInflater,通过LayoutInflater将一个布局转换为view对象
//LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//view = layoutInflater.inflate(R.layout.item_news_layout, null);
} //2获取View上的 子控件对象
ImageView item_img_icon = (ImageView)view.findViewById(R.id.item_img_icon);
TextView item_desc = (TextView) view.findViewById(R.id.item_desc);
TextView item_tv_title = (TextView) view.findViewById(R.id.item_tv_title); //3获取position位置上的条目对应的list集合中的数据,Bean对象
NewsBean newsBean = list.get(i); //4将数据设置给子控件显示
item_img_icon.setImageDrawable(newsBean.icon);
item_tv_title.setText(newsBean.title);
item_desc.setText(newsBean.des); return view;
}

  

  d.getItem方法:将list集合中指定postion上的bean对象返回
  e.getItemId,直接返回postion

5.创建一个封装的Adapter对象,设置给listview 
6.设置listview条目的点击事件 
  listview.setOnItem....

7.复写OnItemClicklistener方法,获取相应条目上的bean对象,最终获取到url,做Intent跳转;

Android 之 ListView的学习的更多相关文章

  1. 38.Android之ListView简单学习(一)

    android中ListView用的很普遍,今天来学习下,本篇主要以本地数据加载到listview,后面会学习从网络获取数据添加到listview. 首先改下布局文件: <?xml versio ...

  2. (转)Android之ListView原理学习与优化总结

    转自: http://jishu.zol.com.cn/12893.html 在整理前几篇文章的时候有朋友提出写一下ListView的性能优化方面的东西,这个问题也是小马在面试过程中被别人问到的….. ...

  3. 42.Android之ListView中ArrayAdapter简单学习

    今天学习下Android中ListView关于ArrayAdapter数据绑定, 废话少说直接上代码. 改下布局文件: <?xml version="1.0" encodin ...

  4. 43.Android之ListView中BaseAdapter学习

    实际开发中个人觉得用的比较多是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gallery.Spinner ...

  5. Android(java)学习笔记133:ListViewProject案例(ListView + BaseAdapter + CheckBox)

    这个案例可能稍微复杂一点,我会讲述详细一点: 1.首先是AndroidManifest.xml: <?xml version="1.0" encoding="utf ...

  6. Android(java)学习笔记132:ListViewProject案例(ListView + ArrayAdapter)

    1.首先是MainActivity.java文件,如下: package com.himi.lv1; import java.util.ArrayList; import java.util.List ...

  7. Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作

    1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: acit ...

  8. Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)

    1.首先说明一个知识点,通常我们显示布局文件xml都是如下: setContentView(R.layout.activity_main): 其实每一个xml布局文件就好像一个气球,我们可以使用Vie ...

  9. Android(java)学习笔记75:ListViewProject案例(ListView + BaseAdapter + CheckBox)

    这个案例可能稍微复杂一点,我会讲述详细一点: 1. 首先是AndroidManifest.xml: <?xml version="1.0" encoding="ut ...

随机推荐

  1. UI第十四节——UIAlertController

    - (void)viewDidLoad {    [super viewDidLoad];        UIButton *alertBtn = [UIButton buttonWithType:U ...

  2. 公众平台调整SSL安全策略 不再支持SSLv2、SSLv3版本

    昨天夜间,微信团队发布重要安全策略调整,将关闭掉SSLv2.SSLv3版本支持,不再支持部分使用SSLv2. SSLv3或更低版本的客户端调用.请仍在使用这些版本的开发者于11月30日前尽快修复升级. ...

  3. Linux进程间通信(九):数据报套接字 socket()、bind()、sendto()、recvfrom()、close()

    前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用. 一.简单回顾——什么是数据报套 ...

  4. MySQL 拷贝数据库表方式备份,还原后提示 table xxx '' doesn`t exist

    MySQL很强大,支持直接拷贝数据库文件快速备份,那数据库文件在哪里呢? 打开MySQL的配置文件 my.ini,找到 datadir 节点,如 datadir="D:/Program Fi ...

  5. sql 获取一批指定范围且不重复的随机数

    declare @M int,@N int set @m=10 set @n=1 select top 10 cast(rand(checksum(newid()))*(@M-@N)+@n as in ...

  6. Nginx/Apache发大招

    导读 网站程序的上传目录通常是不需要PHP执行解释权限,通过限制目录的PHP执行权限可以提网站的安全性,减少被攻击的机率. 下面和大家一起分享下如何在Apache和Nginx禁止上传目录里PHP的执行 ...

  7. mysqldump

    $ mysqldump -uroot -p ott_cibn_cms2_staging > /opt/app/ruby/ott-cibn-cms-2.0/current/public/db.sq ...

  8. VBA之文件筛选

    在工作中,经常会碰到从一堆腐朽的source中按照一个列表去筛选出来现在还要用的source文件. 这个如果用vba来实现的话,会节省大量的时间,而且不会出错. 前提说明: 将想要复制的文件名列表放在 ...

  9. ios推送-B/S架构-socket

    B/S架构项目,某一用户登录后执行了某些动作需要向在手机登录的对应的用户推送消息 通过socket实现 1.socket服务器:使用C#的window服务(该服务监听两个端口:比如平台8889,手机8 ...

  10. Android笔记:异步消息处理

    1. Message Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据.上一小节中我们使用到了Message 的what 字段,除此之外还可以使用arg1 ...