listview界面显示
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界面显示的更多相关文章
- android 学习随笔五(界面)
把数据库内容显示到界面 清单文件设置为线性布局(5大布局属于ViewGroup) 在清单文件中可以增加View显示 LinearLayout ll = (LinearLayout) findViewB ...
- android ListView_新闻案例
xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity&qu ...
- 界面显示两个ListView
1.List界面布局 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:an ...
- Android之下拉刷新的ListView
不废话,代码里面注释很详细,直接上代码: 自定义的RefreshableListView代码: public class RefreshableListView extends ListView im ...
- Android性能优化--Listview优化
ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...
- scrollview中套listView的问题,记录一下。
开发一个订单详情界面,详情界面上面要显示收货地址.订单总金额等,中间部分要一个listView,下面还有一些东西 但是一个界面显示不全,肯定要scrollview,然后发现listView竟然只显示第 ...
- android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)
1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为 2,为了使LISTVIEW的ITEM在点 ...
- android 项目学习随笔十二(ListView加脚布局)
1.ListView加脚布局 头布局initHeaderView,在onTouchEvent事件中进行显示隐藏头布局切换 脚布局initFooterView,实现接口OnScrollListener, ...
- Android 高级UI设计笔记01:使用ExpandableListView组件(ListView的扩展)
1.ExpandableListView是一个用来显示二级节点的ListView. 比如如下效果的界面: 2.使用ExpandableListView步骤 (1)要给ExpandableListVie ...
随机推荐
- 低成本CH7511芯片方案|CH7511电路设计参考|CS5211替代CH7511
CH7511是主要用于设计eDP转LVDS转换器,怎么样设计一款低成本低BOM简单的DP转LVDS的转接设置,目前有一款可以替代兼容CH7511的方案电路,并且其设计电路整体BOM成本较低,并且设计简 ...
- openmesh - impl - Remove Duplicated Vertices
openmesh - impl - Remove Duplicated Vertices 关于openmesh元素删除实现的介绍参见:openmesh - src - trimesh delete a ...
- python 报错:RecursionError: maximum recursion depth exceeded
RecursionError:maximun recursion depth exceeded 超过了最大递归深度 原因: 在使用@property装饰器时,方法名与实例的属性同名,在赋值进从而产生了 ...
- 基于CentOS7.x gitlab环境搭建,卸载,汉化 --搭建篇
gitlab环境搭建,卸载,汉化 --搭建篇 环境搭建 安装依赖软件 yum -y install policycoreutils openssh-server openssh-clients pos ...
- Mysql字符串字段判断是否包含某个字符串的方法
方法一:like SELECT * FROM 表名 WHERE 字段名 like "%字符%"; 方法二:find_in_set() 利用mysql 字符串函数 find_in_s ...
- Zabbix监控报警Lack of free swap space on Zabbix server解决办法
故障描述: Lack of free swap space on Zabbix server 故障原因: 情况一:云主机:因为Zabbix监控没有考虑虚拟主机的swap分区情况. 情况二:物理主机:说 ...
- ubuntu 18.04 关掉sudo密码
关掉sudo密码 $ sudo visudo 找到如下行 %sudo ALL=(ALL:ALL) ALL 修改为 %sudo ALL=(ALL:ALL) NOPASSWD:ALL 这样sudo用户组的 ...
- 移动端字体图标不显示的Bug
用16进制编码的字体图标在部分小米机型显示不正常. 测试机型:小米1,小米1s,小米2浏览器:微信6.1内置浏览器,QQ浏览器 5.7 X5内核字体图标:不显示svg图标:显示正常 以下来自额微信内置 ...
- 【数据结构】图的基本操作——图的构造(邻接矩阵,邻接表),遍历(DFS,BFS)
邻接矩阵实现如下: /* 主题:用邻接矩阵实现 DFS(递归) 与 BFS(非递归) 作者:Laugh 语言:C++ ***************************************** ...
- JS里默认和常用转换
* { font-family: PingFang, Monaco } JS里的六大简单数据类型 string 字符类型 number 数字类型 boolean 布尔类型 symbol ES6语法新增 ...