ListView的应用,模拟网易新闻
来源:互联网 发布:腾讯漫画破解软件 编辑:程序博客网 时间:2024/05/18 02:37
在实际开发中,一个项目就是以这种形式进行开发的
(1)在服务器上获取下来json数据
(2)用Gson或者是fastJson来解析json数据
(3)解析完成的json数据存放在javaBean中
(4)在javaBean中拿出数据进行一个填充View的操作
下面举一个Demo,也是listview的应用场景。看看具体的应用:
第一个类:
public class NewsBean {
public String title;
public String des;
public String url;
public Drawable drawable;
}
第二个类:
public class NewsDao {
public static ArrayList<NewsBean> getAllNews(Context context){
ArrayList<NewsBean> news_lists = new ArrayList<NewsBean>();
for(int i=0;i<100;i++){
NewsBean newsBean = new NewsBean();
newsBean.title="万万没想到,口语可以提升这么快";
newsBean.des="不看你会后悔";
newsBean.url="http://www.cctv.com";
newsBean.drawable=context.getResources().getDrawable(R.drawable.ic_launcher);
//把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第一个元素
news_lists.add(newsBean);
NewsBean newsBean1 = new NewsBean();
newsBean1.title="中国新声音";
newsBean1.des="小鲜肉不错哟";
newsBean1.url="http://www.cctv.com";
newsBean1.drawable=context.getResources().getDrawable(R.drawable.icon1);
//把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第二个元素
news_lists.add(newsBean1);
NewsBean newsBean2 = new NewsBean();
newsBean2.title="人民日报";
newsBean2.des="必看!教育部公布第一批。。。";
newsBean2.url="http://www.cctv.com";
newsBean2.drawable=context.getResources().getDrawable(R.drawable.icon2);
//把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第三个元素
news_lists.add(newsBean2);
}
return news_lists;
}
}
第三个类:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv_news=(ListView) findViewById(R.id.lv_news);
ArrayList<NewsBean> allNews = NewsDao.getAllNews(this);
//设置适配器将存放在ArrayList中的数据传进去,做显示.里面的小括号还有传参的过程
lv_news.setAdapter(new NewsAdapter(allNews));
lv_news.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//当前索引位置的数据,其实就是listview的getItem()方法
NewsBean newsbean =(NewsBean) parent.getItemAtPosition(position);
//这其实就是一个跳转,跳转到Goole浏览器
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(newsbean.url));
startActivity(intent);
Toast.makeText(MainActivity.this, newsbean.url, 0).show();
}
});
}
public class NewsAdapter extends BaseAdapter{
ArrayList<NewsBean> allNews=new ArrayList<NewsBean>();
public NewsAdapter(ArrayList<NewsBean> News) {
this.allNews=News;
}
//ListView的条目个数
public int getCount() {
return allNews.size();
}
//当前索引的数据
public Object getItem(int position) {
return allNews.get(position);
}
//获取当前条目的位置
public long getItemId(int position) {
return position;
}
//填充数据,返回一个view
public View getView(int position, View convertView, ViewGroup parent) {
View view =null;
if(convertView !=null){
view=convertView;
}else{
//将一个xml布局文件填充给一个view
view = View.inflate(MainActivity.this, R.layout.activity_items, null);
}
//获取对应条目上要显示的内容
NewsBean newsBean = allNews.get(position);
//找到控件
ImageView img_icon=(ImageView) view.findViewById(R.id.img_icon);
TextView tv_title=(TextView) view.findViewById(R.id.tv_title);
TextView tv_des=(TextView) view.findViewById(R.id.tv_des);
//为控件设置要显示的内容
img_icon.setImageDrawable(newsBean.drawable);
tv_title.setText(newsBean.title);
tv_des.setText(newsBean.des);
return view;
}
}
}
(1)在服务器上获取下来json数据
(2)用Gson或者是fastJson来解析json数据
(3)解析完成的json数据存放在javaBean中
(4)在javaBean中拿出数据进行一个填充View的操作
下面举一个Demo,也是listview的应用场景。看看具体的应用:
第一个类:
public class NewsBean {
public String title;
public String des;
public String url;
public Drawable drawable;
}
第二个类:
public class NewsDao {
public static ArrayList<NewsBean> getAllNews(Context context){
ArrayList<NewsBean> news_lists = new ArrayList<NewsBean>();
for(int i=0;i<100;i++){
NewsBean newsBean = new NewsBean();
newsBean.title="万万没想到,口语可以提升这么快";
newsBean.des="不看你会后悔";
newsBean.url="http://www.cctv.com";
newsBean.drawable=context.getResources().getDrawable(R.drawable.ic_launcher);
//把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第一个元素
news_lists.add(newsBean);
NewsBean newsBean1 = new NewsBean();
newsBean1.title="中国新声音";
newsBean1.des="小鲜肉不错哟";
newsBean1.url="http://www.cctv.com";
newsBean1.drawable=context.getResources().getDrawable(R.drawable.icon1);
//把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第二个元素
news_lists.add(newsBean1);
NewsBean newsBean2 = new NewsBean();
newsBean2.title="人民日报";
newsBean2.des="必看!教育部公布第一批。。。";
newsBean2.url="http://www.cctv.com";
newsBean2.drawable=context.getResources().getDrawable(R.drawable.icon2);
//把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第三个元素
news_lists.add(newsBean2);
}
return news_lists;
}
}
第三个类:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv_news=(ListView) findViewById(R.id.lv_news);
ArrayList<NewsBean> allNews = NewsDao.getAllNews(this);
//设置适配器将存放在ArrayList中的数据传进去,做显示.里面的小括号还有传参的过程
lv_news.setAdapter(new NewsAdapter(allNews));
lv_news.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//当前索引位置的数据,其实就是listview的getItem()方法
NewsBean newsbean =(NewsBean) parent.getItemAtPosition(position);
//这其实就是一个跳转,跳转到Goole浏览器
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(newsbean.url));
startActivity(intent);
Toast.makeText(MainActivity.this, newsbean.url, 0).show();
}
});
}
public class NewsAdapter extends BaseAdapter{
ArrayList<NewsBean> allNews=new ArrayList<NewsBean>();
public NewsAdapter(ArrayList<NewsBean> News) {
this.allNews=News;
}
//ListView的条目个数
public int getCount() {
return allNews.size();
}
//当前索引的数据
public Object getItem(int position) {
return allNews.get(position);
}
//获取当前条目的位置
public long getItemId(int position) {
return position;
}
//填充数据,返回一个view
public View getView(int position, View convertView, ViewGroup parent) {
View view =null;
if(convertView !=null){
view=convertView;
}else{
//将一个xml布局文件填充给一个view
view = View.inflate(MainActivity.this, R.layout.activity_items, null);
}
//获取对应条目上要显示的内容
NewsBean newsBean = allNews.get(position);
//找到控件
ImageView img_icon=(ImageView) view.findViewById(R.id.img_icon);
TextView tv_title=(TextView) view.findViewById(R.id.tv_title);
TextView tv_des=(TextView) view.findViewById(R.id.tv_des);
//为控件设置要显示的内容
img_icon.setImageDrawable(newsBean.drawable);
tv_title.setText(newsBean.title);
tv_des.setText(newsBean.des);
return view;
}
}
}
1 0
- ListView的应用,模拟网易新闻
- 模拟网易新闻主页的滚动效果
- 网易新闻(ListView部分)
- 模拟实现网易新闻客户端
- 模拟实现网易新闻客户端
- IOS 之模拟网易新闻主页的滚动效果
- 网易新闻首页效果(ViewPager+Fragment+ListView)
- Android 仿网易新闻 listView下拉刷新
- Android之模拟网易新闻客户端
- 模仿网易新闻做的新闻软件
- 类网易新闻首页ListView---异步加载ListView图片
- 利用pulltoRefeshListView实现网易新闻首页效果(可以上拉下拉加载的viewpager+listview)
- listview中的视频播放实现,类似网易新闻客户的视频
- android(23)(网易新闻的简单例子:包括pull解析,httpclient和ListView等知识点)
- 仿网易新闻的ViewpagerIndicator
- 新版网易新闻客户端应用iOS源码
- 新版网易新闻客户端应用源码
- iOS仿网易新闻、新浪新闻的新闻客户端
- 利用H5Canvas进行前端图片压缩再上传笔记
- 141. Linked List Cycle
- Android内容覆盖透明状态栏下实现全屏模式下带状态栏的效果
- AndroidStudio NDK开发
- MySQL下载安装、配置与使用(win7x64)
- ListView的应用,模拟网易新闻
- Android Jni sample
- WebService的开发、部署、调用
- resultMap
- 算法:排序
- iOS - 用Masonry封装的slider,完全支持Masonry的适配
- 手动写一个将数据库中查询的内容封装到对象中
- 小白的CTF之旅——第0站
- [OpenCv]在Ubuntu12.04中OpenCv-2.4.9的配置以及人脸识别程序的测试