android ListView_新闻案例
xml设计
<?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> <ListView android:id="@+id/lv_news" android:layout_height="fill_parent" android:layout_width="fill_parent"/> </RelativeLayout>
<?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> <ListView android:id="@+id/lv_news" android:layout_height="fill_parent" android:layout_width="fill_parent"/> </RelativeLayout>
ListView返回的xml设计
java
package com.itheima.news_listview.utils; import java.util.ArrayList; import android.content.Context; import com.itheima.news_listview.R;
import com.itheima.news_listview.bean.NewsBean; public class NewsUtils { //封装新闻的假数据到list中返回
public static ArrayList<NewsBean> getAllNews(Context context) { ArrayList<NewsBean> arrayList = new ArrayList<NewsBean>(); for(int i = 0 ;i <100;i++)
{
NewsBean newsBean = new NewsBean();
newsBean.title ="谢霆锋经纪人:偷拍系侵权行为:";
newsBean.des= "称谢霆锋隐私权收到侵犯,将保留追究法律责任";
newsBean.news_url= "http://www.sina.cn";
newsBean.icon = context.getResources().getDrawable(R.drawable.ic_launcher);//通过context对象将一个资源id转换成一个Drawable对象。
arrayList.add(newsBean); NewsBean newsBean1 = new NewsBean();
newsBean1.title ="知情人:王菲是谢霆锋心头最爱的人";
newsBean1.des= "身边的人都知道谢霆锋最爱王菲,二人早有复合迹象";
newsBean1.news_url= "http://www.baidu.cn";
newsBean1.icon = context.getResources().getDrawable(R.drawable.icon);//通过context对象将一个资源id转换成一个Drawable对象。
arrayList.add(newsBean1); NewsBean newsBean2 = new NewsBean();
newsBean2.title ="热烈祝贺黑马74高薪就业";
newsBean2.des= "74期平均薪资20000,其中有一个哥们超过10万,这些It精英都迎娶了白富美.";
newsBean2.news_url= "http://www.itheima.com";
newsBean2.icon = context.getResources().getDrawable(R.drawable.icon2);//通过context对象将一个资源id转换成一个Drawable对象。
arrayList.add(newsBean2);
}
return arrayList;
} }
utls
package com.itheima.news_listview.bean; import android.graphics.Bitmap;
import android.graphics.drawable.Drawable; public class NewsBean { public String title;
public String des;
public Drawable icon;
public String news_url; }
bean
package com.itheima.news_listview.adapter; import java.util.ArrayList; import com.itheima.news_listview.R;
import com.itheima.news_listview.bean.NewsBean; import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView; public class NewsAdapter extends BaseAdapter { private ArrayList<NewsBean> list;
private Context context; //通过构造方法接受要显示的新闻数据集合
public NewsAdapter(Context context,ArrayList<NewsBean> list){
this.list = list;
this.context = context;
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int position) {
return list.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
//1.复用converView优化listview,创建一个view作为getview的返回值用来显示一个条目
if(convertView != null){
view = convertView;
}else {
//context:上下文, resource:要转换成view对象的layout的id, root:将layout用root(ViewGroup)包一层作为codify的返回值,一般传null
// view = View.inflate(context, R.layout.item_news_layout, null);//将一个布局文件转换成一个view对象 //通过LayoutInflater将布局转换成view对象
// view = LayoutInflater.from(context).inflate(R.layout.item_news_layout, null); //通过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_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.将数据设置给这些子控件做显示
item_img_icon.setImageDrawable(newsBean.icon);//设置imageView的图片
item_tv_title.setText(newsBean.title);
item_tv_des.setText(newsBean.des); return view;
} }
Adapter
老师笔记
复杂listview界面显示 ,黑马新闻(***********重要***********)
1.布局写listview
2.找到listview
3.获取新闻数据封装到list集合中(才用模拟数据),作为adapter的显示数据,怎么将获取的新闻数据给adapter???
4.创建一个adapter继承BaseAdapter,实现4个方法
getcount: 有多少条新闻数据,就有多少个条目。
getView:将返回一个复杂的布局作为条目的内容展示;并且显示的数据是新闻的信息。 ?????
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
//1.复用converView优化listview,创建一个view作为getview的返回值用来显示一个条目
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上的子控件对象
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.将数据设置给这些子控件做显示
item_img_icon.setImageDrawable(newsBean.icon);//设置imageView的图片
item_tv_title.setText(newsBean.title);
item_tv_des.setText(newsBean.des);
return view;
}
5.创建一个adapter对象设置给listview
6.设置listview的条目的点击事件,并封装点击事件,去查看新闻详情。 ?????????
//设置listview条目的点击事件
lv_news.setOnItemClickListener(this);
//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);
}
1.布局写listview ok
2.找到listview ok
3.封装新闻数据到list集合中 ,目的是为adapter提供数据展示。 ok
4.封装一个Adapter类继承BaseAdatper,写一个构造方法接受list集合数据,复写四个方法
a.创建一个构造方法 ok
b.封装getCount方法 ok
c.getView方法: 不ok
1.复用convertview,模板代码,如果不都能空,需要将一个布局文件转换为view对象作为getview的返回对象。
view = View.inflater(Context context, int resuorceId,ViewGroup root)
2.找到view上的这些子控件,目的是将list集合中的bean数据一一对应设置给这些子控件
3.从list集合中获取postion条目上要显示的数据Bean
4.将获取的bean中的数据设置给这些子控件
d.getItem方法:将list集合中指定postion上的bean对象返回
e.getItemId,直接返回postion
5.创建一个封装的Adapter对象,设置给listview ok
6.设置listview条目的点击事件 ok
listview.setOnItem....
7.复写OnItemClicklistener方法,获取相应条目上的bean对象,最终获取到url,做Intent跳转; 不ok
#10 常用获取inflate的写法
1.
//context:上下文, resource:要转换成view对象的layout的id, root:将layout用root(ViewGroup)包一层作为codify的返回值,一般传null
//view = View.inflate(context, R.layout.item_news_layout, null);//将一个布局文件转换成一个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);
android ListView_新闻案例的更多相关文章
- Android实训案例(九)——答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程
Android实训案例(九)--答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程 项目也是偷师的,决心研究一下数据库.所以写的还是很详细的,各位看官,耐着性子看完,实现结果不重要 ...
- Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...
- Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听
Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...
- Android实训案例(五)——四大组件之一ContentProvider的使用,通讯录的实现以及ListView的优化
Android实训案例(五)--四大组件之一ContentProvider的使用,通讯录的实现 Android四大组件是啥这里就不用多说了,看图吧,他们之间通过intent通讯 我们后续也会一一的为大 ...
- Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!
Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...
- Android实训案例(二)——Android下的CMD命令之关机重启以及重启recovery
Android实训案例(二)--Android下的CMD命令之关机重启以及重启recovery Android刚兴起的时候,着实让一些小众软件火了一把,切水果,Tom猫,吹裙子就是其中的代表,当然还有 ...
- Android实训案例(一)——计算器的运算逻辑
Android实训案例(一)--计算器的运算逻辑 应一个朋友的邀请,叫我写一个计算器,开始觉得,就一个计算器嘛,很简单的,但是写着写着发现自己写出来的逻辑真不严谨,于是搜索了一下,看到mk(没有打广告 ...
- Android Studio精彩案例(一)《ActionBar和 ViewPager版仿网易新闻客户端》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 为了能更好的分享高质量的文章,所以开设了此专栏.文章代码都以Android Studio亲测运行,读者朋友可在后面直接下载源码.该专栏 ...
随机推荐
- JS的setTimeout函数第一个参数问题
setTimeout的第一个参数只能放一个无参的函数,更像放了一个函数指针在那里,如果要放带参数的话,就要拿个匿名函数包裹一下
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- QT程序在windows下部署发布
转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及q ...
- C# 自定义重绘TabControl
using System.Drawing; using System.Windows.Forms; using System.Drawing.Drawing2D; using System.Runti ...
- UVa OJ 10055
Problem A Hashmat the brave warrior Input: standard input Output: standard output Hashmat is a brave ...
- 【HTML5 2】《html5 开发精要与实例讲解》 step1 -- 导读
一.教程重点:以 综合性案例 为导向,辅之以 精要知识点 二.内容概况: 第1部分:通过 大小型案例 对 各重要知识点 进行详细讲解 第2部分:jWebSocket.RGraph.WebGL 三个重要 ...
- ASUS K751笔记本电脑使用U盘启动
ASUS K751笔记本电脑缺省是不能使用U盘启动的.即使开机按ESC键出现启动设备选项菜单,选择了U盘也一样会从硬盘启动. 为此需进行如下步骤: 开机按F2进入bios如下设置: Security- ...
- C#解析Json字符串
1.var resultStr={"from":"en","to":"zh","trans_result&qu ...
- 对象(类)的封装方式(面向对象的js基本知识)
上一个月一直忙于项目,没写过笔记,今天稍微空下来了一点 前几天在写项目的时候关于怎么去封装每一个组件的时候思考到几种方式,这里总结一下: 1.构造函数方式(类似java写类的方式):把所有的属性和方法 ...
- 51nod B君的圆锥(数学)
题目链接: B君的圆锥 基准时间限制:1 秒 空间限制:131072 KB B君要用一个表面积为S的圆锥将白山云包起来. B君希望包住的白山云体积尽量大,B君想知道体积最大可以是多少. 注意 ...