• 安卓 新浪微博随便看看


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

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

  • 相关阅读:
    [bug] C:warning: implicit declaration of function ‘getline’
    [Java] 内部类
    [架构] 数据库技术选型
    [bug] Maven修改pom文件后jdk版本回退
    [物联网] 电气 & 工控
    [bug] mysql 忘记密码
    [物联网] 电路分析
    机器学习sklearn(二十五): 模型评估(五)量化预测的质量(二)分类指标
    机器学习sklearn(二十四): 模型评估(四)量化预测的质量(一)scoring 参数: 定义模型评估规则
    机器学习sklearn(二十三): 模型评估(三)交叉验证:评估估算器的表现(三) 交叉验证迭代器
  • 原文地址:https://www.cnblogs.com/xuyinghui/p/4485698.html
Copyright © 2020-2023  润新知