1.布局写listview 



    2.找到listview 

    

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



    4.封装一个Adapter类继承BaseAdatper,写一个构造方法接受list集合数据,复写四个方法

  getcount: 有多少条新闻数据,就有多少个条目。
        getView:将返回一个复杂的布局作为条目的内容展示;并且显示的数据是新闻的信息。

a.创建一个构造方法 

        b.封装getCount方法    

        c.getView方法:

  public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        //1.复用converView优化listview,模板代码,,创建一个view作为getview的返回值用来显示一个条目,如果convertview为空,需要将一个布局文件转换为view对象作为getview的返回对象。view = View.inflater(Context context, int resuorceId,ViewGroup root)
                
        if(convertView != null){
            view = convertView;
        }else {
            //context:上下文, resource:要转换成view对象的layout的id, root:将layout用root(ViewGroup)包一层作为getview的返回值,一般传null
            view = View.inflate(context, R.layout.item_news_layout, null);//将一个布局文件转换成一个view对象
        }
        //2.获取view上的子控件对象,目的是将list集合中的bean数据一一对应设置给这些子控件
        ImageView item_img_icon = (ImageView) view.findViewById(R.id.item_img_icon);
        TextView item_tv_des = (TextView) view.findViewById(R.id.item_tv_des);
        TextView item_tv_title = (TextView) view.findViewById(R.id.item_tv_title);
        //3.获取postion位置条目对应的list集合中的新闻数据,Bean对象
        NewsBean newsBean = list.get(position);
        //4.将获取的bean中的数据设置给这些子控件
        item_img_icon.setImageDrawable(newsBean.icon);//设置imageView的图片
        item_tv_title.setText(newsBean.title);
        item_tv_des.setText(newsBean.des);
        
        return view;
    }

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

        e.getItemId,直接返回postion



    5.创建一个封装的Adapter对象,设置给listview   
    6.设置listview条目的点击事件  
          //设置listview条目的点击事件
        lv_news.setOnItemClickListener(this);
    
    7.复写OnItemClicklistener方法,获取相应条目上的bean对象,最终获取到url,做Intent跳转;

 //listview的条目点击时会调用该方法 parent:代表listviw  view:点击的条目上的那个view对象   position:条目的位置  id: 条目的id
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        
        //需要获取条目上bean对象中url做跳转
        NewsBean bean = (NewsBean) parent.getItemAtPosition(position);
        
        String url = bean.news_url;
        
        //跳转浏览器
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(url));
        startActivity(intent);
    }

listview界面显示的更多相关文章

  1. android 学习随笔五(界面)

    把数据库内容显示到界面 清单文件设置为线性布局(5大布局属于ViewGroup) 在清单文件中可以增加View显示 LinearLayout ll = (LinearLayout) findViewB ...

  2. android ListView_新闻案例

    xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity&qu ...

  3. 界面显示两个ListView

    1.List界面布局 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:an ...

  4. Android之下拉刷新的ListView

    不废话,代码里面注释很详细,直接上代码: 自定义的RefreshableListView代码: public class RefreshableListView extends ListView im ...

  5. Android性能优化--Listview优化

    ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...

  6. scrollview中套listView的问题,记录一下。

    开发一个订单详情界面,详情界面上面要显示收货地址.订单总金额等,中间部分要一个listView,下面还有一些东西 但是一个界面显示不全,肯定要scrollview,然后发现listView竟然只显示第 ...

  7. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

  8. android 项目学习随笔十二(ListView加脚布局)

    1.ListView加脚布局 头布局initHeaderView,在onTouchEvent事件中进行显示隐藏头布局切换 脚布局initFooterView,实现接口OnScrollListener, ...

  9. Android 高级UI设计笔记01:使用ExpandableListView组件(ListView的扩展)

    1.ExpandableListView是一个用来显示二级节点的ListView. 比如如下效果的界面: 2.使用ExpandableListView步骤 (1)要给ExpandableListVie ...

随机推荐

  1. Java初学者作业——编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数。

    返回本章节 返回作业目录 需求说明: 编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数. 实现思路: 声明变量sum.count以及avg用于存储总成绩.班 ...

  2. 三角网格上的寻路算法Part.2—A*算法

    背景 继上一篇三角网格Dijkstra寻路算法之后,本篇将继续介绍一种更加智能,更具效率的寻路算法-A*算法,本文将首先介绍该算法的思想原理,再通过对比来说明二者之间的相同与不同之处,然后采用类似Di ...

  3. 游戏中的自动寻路-A*算法(第一版优化——走斜线篇)

    一.简述以及地图 G 表示从起点移动到网格上指定方格的移动距离 (暂时不考虑沿斜向移动,只考虑上下左右移动). H 表示从指定的方格移动到终点的预计移动距离,只计算直线距离,走直角篇走的是直角路线. ...

  4. SpringBoot 之 JSR303 数据校验

    使用示例: @Component @ConfigurationProperties(prefix = "person") @Validated //使用数据校验注解 public ...

  5. python + pymysql连接数据库报“(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)")”

    python + pymysql连接数据库报"(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)&quo ...

  6. APP自动化测试之手机滑屏

    相信大家在安装一个APP之后,进入之前会有几个页面组成的滑屏欢迎页面,要对这个APP进行自动化测试之前,就需要实现自动滑屏,怎么实现呢?请继续往下看 滑屏分 左滑和右滑,上滑.下滑 实现的原理(左滑) ...

  7. Linux上天之路(十三)之系统进程管理

    主要内容 进程介绍 进程管理 进程优先级 1. 进程介绍 Linux系统中的几乎任何行动都会以进程的形式进行.如果你用网络浏览器查看网页,浏览器就作为进程运行.如果键入bash shell的命令行,这 ...

  8. 网络协议学习笔记(六)http和https

    概述 之前讲解了传输层的相关知识,现在讲解一下关于应用层的知识,主要是大家所熟悉的http和https,这2中是咱们最熟悉的协议了,但是也是最不熟悉的协议. HTTP协议:看个新闻原来这么麻烦 HTT ...

  9. 【C语言】将文本中汉字读入字符数组输出乱码

    输出中文字符乱码 今天从文件中将中文读入字符数组后输出发现其中文变成了乱码,,令人头大. 解决办法 将文本编码格式改成ANSI即可. 打开记事本->文件->另存为->更改编码格式-& ...

  10. 内核内存分配器SLAB和SLUB

    内核分配器的功能 在操作系统管理的虚拟内存中,用于内存管理的最小单位是页,大多数传统的架构是4KB.由于进程每次申请分配4KB是不现实的,比如分配几个字节或几十个字节,这时需要中间机制来管理页面的微型 ...