安卓 新浪微博随便看看

关于UI布局中,listView控件的使用:(该篇的功能是实现简单的微博随便看看)

1:创建数据源

2:创建适配器

3:建立Adapter和数据的关联,建立AdapterView和Adapter之间的关联。

下面分别摘取几个比较重要的代码:

MainActivity.java:

 1 import java.text.SimpleDateFormat;
 2 import java.util.ArrayList;
 3 import java.util.Date;
 4 import java.util.List;
 5 import java.util.Random;//导入Random,方便下面对访问人气的随机数生成
 6
 7 import bzu.edu.hou.adapter.ArticleAdapter;
 8 import bzu.edu.hou.adapter.Messages;
 9 import bzu.edu.hou.view.MyListView;
10 import android.R.integer;
11 import android.os.Bundle;
12 import android.os.Handler;
13 import android.os.Message;
14
15
16 import android.app.Activity;
17 import android.content.res.TypedArray;
18 import android.view.Menu;
19 import android.view.Window;
20 import android.widget.ArrayAdapter;
21 import android.widget.BaseAdapter;
22 import android.widget.LinearLayout;
23
24 public class MainActivity extends Activity {
25
26     private MyListView mylistview=null;
27     private List<Messages> list_msg=null;
28     private BaseAdapter adapter=null;
29     @Override
30     protected void onCreate(Bundle savedInstanceState) {
31         super.onCreate(savedInstanceState);
32         requestWindowFeature(Window.FEATURE_NO_TITLE);
33         setContentView(R.layout.activity_main);
34
35         init();
36         if(list_msg==null){//判断是否为空
37             getData();
38         }
39
40
41         adapter=new ArticleAdapter(this,list_msg);
42
43
44         mylistview.setAdapter(adapter);
45     }
46
47
48
49     private void getData() {
50
51         //获得xml的资源
52         String names[];
53         String article[];
54         TypedArray img;
55         int i;
56
57         names=getResources().getStringArray(R.array.name);
58         article=getResources().getStringArray(R.array.article);
59         img=getResources().obtainTypedArray(R.array.head_photo);
60
61         list_msg=new ArrayList<Messages>();
62         for(i=0;i<names.length;i++){
63             Messages message=new Messages();
64             message.setImg(img.getDrawable(i));
65             message.setName(names[i]);
66             message.setArticel(article[i]);
67             message.setRq("人气:"+String.valueOf(new Random().nextInt(1000)));
68             Date date=new Date();
69             SimpleDateFormat simple=new SimpleDateFormat("MM-dd");//格式化生成的时间
70             message.setTime(simple.format(date));
71             list_msg.add(message);
72         }
73     }
74     private void init() {
75
76         mylistview=(MyListView)findViewById(R.id.myListView1);
77
78     }79  }

2:适配器:

 1 import java.util.List;
 2 import android.content.Context;
 3 import android.view.LayoutInflater;
 4 import android.view.View;
 5 import android.view.ViewGroup;
 6 import android.widget.BaseAdapter;
 7 import android.widget.ImageView;
 8 import android.widget.LinearLayout;
 9 import android.widget.TextView;
10 /××如果AiticleAdapter继承的是ArrayAdapter就只需要重写getView()方法,如果继承的是BaseAdapter就需要重写getCount(),getItem()等方法。××/
11 public class ArticleAdapter extends BaseAdapter
12 {
13     private List<Messages> list_mes = null;
14     private Context context;
15
16     public ArticleAdapter(Context context, List<Messages> list_mes)
17     {
18         this.list_mes = list_mes;
19         this.context = context;
20     }
21
22     @Override
23     public int getCount()
24     {
25         // TODO Auto-generated method stub
26         return list_mes.size();
27     }
28
29     @Override
30     public Object getItem(int position)
31     {
32         return list_mes.get(position);
33     }
34
35     @Override
36     public long getItemId(int position)
37     {
38         return position;
39     }
40
41     @Override
42     public View getView(int position, View convertView, ViewGroup parent)
43     {
44         ListItem listitem;
45         if (convertView == null)//此处加上对convertView的判断操作
46         {
47             convertView = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.list_layout, null);//将后面需要显示的数据进行压入布局中。
48
49             listitem = new ListItem();
50             listitem.img = (ImageView) convertView.findViewById(R.id.head_img);
51             listitem.name = (TextView) convertView.findViewById(R.id.name);
52             listitem.time = (TextView) convertView.findViewById(R.id.time);//注意:此处查找组件不同于以前的查找组件。
53             listitem.rq = (TextView) convertView.findViewById(R.id.rq);
54             listitem.article = (TextView) convertView.findViewById(R.id.article);
55
56             convertView.setTag(listitem);
57         } else
58         {
59             listitem = (ListItem) convertView.getTag();
60         }
61
62         listitem.img.setImageDrawable(list_mes.get(position).getImg());
63         listitem.name.setText(list_mes.get(position).getName());
64         listitem.time.setText(list_mes.get(position).getTime());
65         listitem.rq.setText(list_mes.get(position).getRq());
66         listitem.article.setText(list_mes.get(position).getArticel());
67         return convertView;
68     }
69
70     public class ListItem
71     {
72         ImageView img;
73         TextView name;
74         TextView time;
75         TextView rq;
76         TextView article;
77     }
78 }

3:布局文件:

在显示布局中,无非是实现布局的嵌套。如:list_layout.xml:在该布局中,使用线性布局,相对布局,ImageView等层层嵌套达到预期的效果。在布局嵌套中,应该明确布局间的关系。(但:下面代码有个不足之处:对于text文本的引用,应该尽量在string.xml中进行引用,下面采用了硬编码方式,不值得提倡。)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:padding="10dip"
 6     android:orientation="vertical" >
 7     <RelativeLayout
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         >
11         <ImageView
12             android:id="@+id/head_img"
13             android:src="@drawable/p1"
14             android:layout_width="wrap_content"
15             android:layout_height="wrap_content"
16             android:layout_marginTop="5dip"
17             android:layout_alignParentLeft="true"
18             />
19         <LinearLayout
20             android:layout_width="match_parent"
21             android:layout_height="wrap_content"
22             android:layout_toRightOf="@+id/head_img"
23             android:layout_marginLeft="7dip"
24             android:orientation="vertical">
25             <RelativeLayout
26                 android:layout_width="match_parent"
27                 android:layout_height="wrap_content">
28                 <TextView
29                     android:id="@+id/name"
30                     android:layout_width="wrap_content"
31                     android:layout_height="wrap_content"
32                     android:layout_alignParentLeft="true"
33                     android:textColor="#FF6666"
34                     android:textSize="16sp"
35                     android:typeface="sans"
36                     android:textStyle="bold"
37                     android:text="星星"/>
38                 <TextView
39                     android:id="@+id/time"
40                     android:layout_width="wrap_content"
41                     android:layout_height="wrap_content"
42                     android:layout_toRightOf="@id/name"
43                     android:layout_alignBottom="@id/name"
44                     android:layout_marginLeft="5dip"
45                     android:textColor="#696969"
46                     android:textSize="12sp"
47                     android:text="12:11"/>
48
49                  <TextView
50                     android:id="@+id/rq"
51                     android:layout_width="wrap_content"
52                     android:layout_height="wrap_content"
53                     android:layout_alignParentRight="true"
54                     android:layout_centerVertical="true"
55                     android:textSize="9sp"
56                     android:text="123"/>
57             </RelativeLayout>
58             <LinearLayout
59                 android:layout_width="match_parent"
60                 android:layout_height="wrap_content"
61                 android:layout_marginTop="5dip">
62                 <TextView
63                     android:id="@+id/article"
64                     android:layout_width="match_parent"
65                     android:layout_height="wrap_content"
66                     android:minHeight="50px"
67                     android:textSize="12sp"
68                     android:text="种不同的1"/>
69             </LinearLayout>
70         </LinearLayout>
71     </RelativeLayout>
72 </LinearLayout>

该程序实现的效果如下所示:

时间: 2024-10-09 05:38:51

安卓 新浪微博随便看看的相关文章

Android学习之模仿新浪微博随便看看栏目

小编目前仍在Android学习中,本次模仿新浪微博随便看看栏目运行效果如下: 过程分析: 完成该项目大概可以分为三部分:  布局设计,自定义适配器 和 为适配器添加数据; 1.布局设计中,小编在mainactivity.xml文件中定义了一个ListView控件,并单独设定了一个数据项的布局list_cell, 数据项代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a

模拟新浪微博随便看看栏目

使用ListView来模仿微博随便看看栏 [分析] 要完成这个效果,我们需要: 1.ListView及ListView_Item 2.实体类的编写 3.自定义适配器的书写 4.ListView的绑定数据源与控件 [编码] package cn.edu.bzu.adapter; import java.util.List; import cn.edu.bzu.entity.Information;import cn.edu.bzu.weibo.R;import android.content.Co

模拟新浪微博随便看看

1. 训练目标1) 掌握ListView 控件的使用2) 理解Adapter 的作用并掌握自定义FruitAdapter 的使用方式 2.开发步骤 1)自定义适配器MyAdapter package cn.edu.bzu.adapter;   import java.util.List;   import cn.edu.bzu.entity.Information; import cn.edu.bzu.weibo_looking.R; import android.content.Context

微信公众号批量爬取java版

最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很大困扰.后来在知乎上看到了一位大牛用php写的微信公众号爬取程序,就直接按大佬的思路整了整搞成java的了.改造途中遇到蛮多细节问题,拿出来分享一下. 附上大牛文章链接:https://zhuanlan.zhihu.com/c_65943221  写php的或者只需要爬取思路的可以直接看这个,思路写

安卓开发笔记——个性化TextView(新浪微博)

这几天在仿写新浪微博客户端,在处理微博信息的时候需要处理关键字高亮和微博表情,查了一些资料,决定记录点东西 先来看下效果图: 像以上这种#话题#,@XXX昵称,HTTP:网页链接等元素,在微博里是被高亮成蓝色效果的. 那么在我们的安卓程序开发中应该如何动态的实现这些效果呢? 其实很简单,我写了个小例子,先来看下效果图: 其实要实现这种效果非常的简单,在Android里已经帮我们封装好了一系列的工具类,例如: android.text.Spanned android.text.SpannableS

安卓学习笔记之新浪微博开发(一)

最近对安卓比较生疏了,所以想通过开发一款客户端软件来练练手,我最先想到的就是新浪微博客户端了,听说腾讯微博要关闭,无不喜大普奔. 最先下载了一个android demo 下载网址是:https://github.com/mobileresearch/weibo_android_sdk 登录我的微博账号,添加应用 填写好包名和数字签名: 除此之外还要设置,回调页地址: 设置完这些之后基本上微博端就可以支持测试了. 将sdk调入eclipse之后就可以得到两个应用程序文件夹,运行demo的时候必须在

安卓开发笔记——高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现)

先让大家看下效果图,这个是我自己在闲暇时间仿写的新浪微博客户端: 今天来讲讲如何实现上图的效果,这里需要用到SpannableString这个工具类,如果你对这个类并不熟悉,可以先看下我之前写的2篇文章: <安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607.html <安卓开发笔记——丰富多彩的TextView>:http://www.cnblogs.com/lichenwei/p/46120

安卓开发复习笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)

记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航) 安卓开发复习笔记——TabHost组件(二)(实现底部菜单导航) 关于Fragment类在之前的安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)也介绍过,这里就不再重复阐述了. 国际惯例,先来张效果图: 下面

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签