Android模拟新浪微博随便看看栏目
来源:互联网 发布:淘宝推广外站 编辑:程序博客网 时间:2024/06/05 22:54
1.根据内容要求,首先我们要创建新闻实体类;
实体类的内容包括:
(1.)头像————————————–iNewsImg(存放的是图片的Id)
(2.)作者名称——————————–NewsName
(3.)发布时间——————————–NewsData
(4.)新闻内容——————————–NewsText
并添加Get、Set方法和构造方法
代码如下:
/*** * 发布信息用户实体类 * 2015.05.04 */ package cn.edu.bzu.entity; public class Center { private String NewsName; private int NewsImg; private String NewsText; private String NewsDate; public Center(String newsName, int newsImg, String newsText, String newsDate) { super(); NewsName = newsName; NewsImg = newsImg; NewsText = newsText; NewsDate = newsDate; } public String getNewsName() { return NewsName; } public void setNewsName(String newsName) { NewsName = newsName; } public int getNewsImg() { return NewsImg; } public void setNewsImg(int newsImg) { NewsImg = newsImg; } public String getNewsText() { return NewsText; } public void setNewsText(String newsText) { NewsText = newsText; } public String getNewsDate() { return NewsDate; } public void setNewsDate(String newsDate) { NewsDate = newsDate; } }
2.布局
(1.)在activity_main.xml中添加一个ListView控件
(2.)创建一个新的XML布局方式为相对布局,添加ImageView,和三个TextView控件,分别显示头像、用户名、新闻内容和发布时间
布局代码如下:
Acyivity代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>
新建立XML文件代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/NewImg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/p1" /> <TextView android:id="@+id/NewsData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_alignParentRight="true" android:text="TextView" /> <TextView android:id="@+id/NewsName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/NewImg" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/NewsText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/NewsName" android:layout_marginLeft="15dp" android:layout_toRightOf="@+id/NewImg" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /></RelativeLayout>
3.创建适配器
系统所提供的Adapter适配器不能满足我们现在的需要,所以我们要自定义一个适配器NewsAdapter,继承ArrayAdapter
重写getView方法
getView方法:
该方法是每个子项再被滚动到屏幕的时候会被调用;里面有三个参数:
(1.)当前获取对象的Id,在getView()中取出这个对象;
(2.)getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用;
为了使代码更具有可读性,在GetView()方法中定义了一个内部类viewHolder用来存放数据;
具体代码如下:
package com.example.news1;import java.util.List;import cn.edu.bzu.entity.Center;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;public class NewsAdapter extends ArrayAdapter<Center> { private int resource; public NewsAdapter(Context context, int textViewResourceId, List<Center> objects) { super(context, textViewResourceId, objects); resource=textViewResourceId; } /*** * 重写GetView方法 */ //getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用 public View getView(int position,View convertView,ViewGroup parent) { View view=null; viewHolder viewholder; Center center=(Center)getItem(position); if(convertView==null){ view=LayoutInflater.from(getContext()).inflate(resource, null); viewholder=new viewHolder(); viewholder.NewsImg=(ImageView)view.findViewById(R.id.NewImg); viewholder.NewsName=(TextView)view.findViewById(R.id.NewsName); viewholder.NewsText=(TextView)view.findViewById(R.id.NewsText); viewholder.NewsData=(TextView)view.findViewById(R.id.NewsData); view.setTag(viewholder); } else{ view=convertView; viewholder=(viewHolder)convertView.getTag(); } viewholder.NewsImg.setImageResource(center.getNewsImg()); viewholder.NewsName.setText(center.getNewsName()); viewholder.NewsText.setText(center.getNewsText()); viewholder.NewsData.setText(center.getNewsDate()); return view; } class viewHolder { ImageView NewsImg; TextView NewsName; TextView NewsText; TextView NewsData; }}
4.在MainActivity中的操作:
(1.)获取activity_main中的ListView控件
(2.)在MainActivity中添加一个方法用来创建新的新闻内容放入创建好的List列表中去;
(3.)获取数据,并创建适配器,将布局的Id和数据信息传递给自定义的适配器NewsAdapter;
(4.)用SetAdapter()方法绑定AdapterView和Adapter之间的关联
具体代码如下:
package com.example.news1;import java.util.ArrayList;import java.util.List;import cn.edu.bzu.entity.Center;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.ListView;public class MainActivity extends Activity { private ListView lvNews; private List<Center> list=new ArrayList<Center>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lvNews=(ListView) findViewById(R.id.lvNews); //1.获取数据 addNews(); //2.创建适配器 NewsAdapter adapter=new NewsAdapter(this, R.layout.news_item, list); //适配器与控件的绑定 lvNews.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private void addNews() { list.add(new Center("小王", R.drawable.p1, "中国国家主席习近平于5月7日至12日出席在莫斯科举行的纪念卫国战争胜利" + "70周年庆典并访问俄罗斯、哈萨克斯坦、白俄罗斯", "2015-05-06")); list.add(new Center("小李", R.drawable.p2, "他是刘少奇的俄籍长孙,48岁才第一次踏上中国的土地。他的俄罗斯名字叫阿" + "廖沙,中文取名刘维宁。在他敞亮的广州办公室里,与新浪新闻的对话持续了近4个小时。", "2015-05-06")); list.add(new Center("小张", R.drawable.p3, "昨日,中共中央政治局常委、国务院总理李克强先后来到中国科学院和北京中关" + "村创业大街考察调研。这是李克强在中科院物理所超导实验室考察。", "2015-05-06")); list.add(new Center("小胡", R.drawable.p4, "日前,经中共中央批准,中共中央纪委对河北省委原常委、秘书长景春华严重违纪" + "问题进行了立案审查。", "2015-05-06")); list.add(new Center("小明", R.drawable.p5, " 美国研究机构指出,最新的卫星图像显示,越南在有主权争议的南海两处地点填海" + "造地,美国国务院及军方暂时未有评论图像。", "2015-05-06")); list.add(new Center("小红", R.drawable.p6, "常州一小区发生家庭惨剧,一名醉酒男子持刀砍伤前妻和前丈母娘,他们的9岁的儿子奋起反击又把父亲砍伤。", "2015-05-06")); list.add(new Center("小刘", R.drawable.p7, "龙潭某小区的徐女士突然失踪了,家人向派出所报了警,警方调查后发现徐女士被一个黑衣男子带走了。", "2015-05-06")); list.add(new Center("小黑", R.drawable.p8, "11111111111111111111111111111", "2015-05-06")); list.add(new Center("小丽", R.drawable.p9, "222222222222222222222222222222", "2015-05-06")); list.add(new Center("小花", R.drawable.p10, "3333333333333333333333333333", "2015-05-06")); }}
5.创建模拟器,并运行项目
项目显示成功
如图:
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- 模拟新浪微博随便看看栏目
- android :模拟新浪微博随便看看栏目
- Android模拟新浪微博随便看看栏目
- 项目管理之我见
- android5.0状态栏图标变成白色
- eclipse maven 创建struts项目
- visio画图——圆柱
- 在 fragment 里面调用 findViewById
- Android模拟新浪微博随便看看栏目
- tchar函数
- windows.open 弹出新窗口
- vim在窗口的最上面显示当前打开文件的路径和文件名
- 【第三章】 DI 之 3.3 更多DI的知识 ——跟我学spring3
- Integer to Roman
- 驱动汇编和c混用
- as3用字符串 String 获取类 Class 及类 Class 中的一个方法 Func...
- C# 调用API接口处理公共类 自带JSON实体互转类