关于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>

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

 

posted on 2015-05-07 18:12  星梦缘vs惜  阅读(297)  评论(0编辑  收藏  举报