zoukankan      html  css  js  c++  java
  • Android组件的使用:ListView、GridView

    1、ListView的使用

    1.1ListView的功能就像之前的Spinner、AutoCompleteTextView中添加额外的资源文件一样,可以把其他资源文件的信息作为一个整体加载到ListView的子列表中。

    新建一个listview.xml文件,文件中只有一个ListView组件,组件中的信息需要通过另外一个布局文件加载到ListView中,代码如下:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout 
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical" >
     7     
     8     <ListView 
     9         android:id="@+id/lv_showlistviewitem"
    10         android:layout_width="match_parent"
    11         android:layout_height="wrap_content"> 
    12     </ListView>
    13 </LinearLayout>

    新建listview_extra_layou.xml,代码如下:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout 
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical" >
     7     
     8     <ImageView 
     9         android:id="@+id/iv_showimage"
    10         android:layout_width="wrap_content"
    11         android:layout_height="wrap_content"
    12         android:src="@drawable/d1"/>
    13     <TextView
    14         android:id="@+id/tv_showtextviewinfo"
    15         android:layout_width="wrap_content"
    16         android:layout_height="wrap_content"
    17         android:text="@string/app_name"/>
    18     
    19 </LinearLayout>

    新建Activity类,ListViewDemoActivity,完整代码如下:

     1 package com.example.basiccomponent2;
     2 
     3 import java.util.ArrayList;
     4 import java.util.HashMap;
     5 import java.util.List;
     6 import java.util.Map;
     7 
     8 import android.app.Activity;
     9 import android.os.Bundle;
    10 import android.widget.ListView;
    11 import android.widget.SimpleAdapter;
    12 
    13 public class ListViewDemoActivity extends Activity {
    14     private ListView lv_showlistviewitem = null;
    15     private List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    16     @Override
    17     protected void onCreate(Bundle savedInstanceState) {
    18         super.onCreate(savedInstanceState);
    19         super.setContentView(R.layout.listview_layout);
    20         lv_showlistviewitem = (ListView)super.findViewById(R.id.lv_showlistviewitem);
    21         //获得listview_extra_layout.xml各组件id名
    22         String id_name[] ={
    23                 "iv_showimage",
    24                 "tv_showtextviewinfo"
    25         }; 
    26         //获得listview_extra_layout.xml中id名对应的R文件id
    27         int id_rid[] = {
    28                 R.id.iv_showimage,
    29                 R.id.tv_showtextviewinfo
    30         };
    31         //定义图片数组数据
    32         int images[] = {
    33                 R.drawable.d1,
    34                 R.drawable.d2,
    35                 R.drawable.d3
    36         };
    37         //定义数组数据
    38         String info[] = {
    39                 "文本1","文本2"
    40         };
    41         //循环把图片和文本加入到map集合中,再把map集合数据添加到list集合中。
    42         for(int i = 0; i<info.length;i++){
    43             Map<String,String> map =new  HashMap<String,String>();
    44             map.put("iv_showimage", images[i]+"");
    45             map.put("tv_showtextviewinfo", info[i]);
    46             list.add(map);
    47         }
    48         //通过adpter加载数据
    49         SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.listview_extra_layout, id_name, id_rid);
    50         //组件设置适配器
    51         lv_showlistviewitem.setAdapter(adapter);
    52     }
    53 }

    运行效果:

    2、GridView的使用

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout 
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical" >
     7     
     8     <GridView 
     9         android:id="@+id/gv_showinfo"
    10         android:layout_width="wrap_content"
    11         android:layout_height="wrap_content"
    12         android:numColumns="3"/>
    13 </LinearLayout>
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout 
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:gravity="center"
     7     android:orientation="vertical" >
     8     
     9     <ImageView
    10         android:id="@+id/iv_showgvitemimg"
    11         android:layout_width="wrap_content"
    12         android:layout_height="wrap_content"
    13         android:src="@drawable/ic_launcher"/>
    14     <TextView
    15         android:id="@+id/tv_showgvitemtxt"
    16         android:layout_width="wrap_content"
    17         android:layout_height="wrap_content"/>
    18 </LinearLayout>
     1 package com.example.entity;
     2 
     3 public class GridViewStudent {
     4     private int photo; // 存放学生图片id
     5     private String name; // 存放学生姓名
     6 
     7     /*
     8      * 无参构造方法
     9      */
    10     public GridViewStudent(){}
    11     /*
    12      * 全参构造方法
    13      */
    14     public GridViewStudent(int photo,String name){
    15         this.photo = photo;
    16         this.name = name;
    17     }
    18     /*
    19      * gettter方法
    20      */
    21     public int getPhoto() {
    22         return photo;
    23     }
    24     /*
    25      * settter方法
    26      */
    27     public void setPhoto(int photo) {
    28         this.photo = photo;
    29     }
    30     /*
    31      * gettter方法
    32      */
    33     public String getName() {
    34         return name;
    35     }
    36     /*
    37      * settter方法
    38      */
    39     public void setName(String name) {
    40         this.name = name;
    41     }
    42 
    43 }
     1 package com.example.adapter;
     2 
     3 import java.util.List;
     4 
     5 import android.content.Context;
     6 import android.view.LayoutInflater;
     7 import android.view.View;
     8 import android.view.ViewGroup;
     9 import android.widget.BaseAdapter;
    10 import android.widget.ImageView;
    11 import android.widget.TextView;
    12 
    13 import com.example.activity.R;
    14 import com.example.entity.GridViewStudent;
    15 
    16 public class GridViewDemoAdapter extends BaseAdapter {
    17 
    18     private Context context;            //定义上下文属性(即传过来的GridViewDemoActivity类)
    19     private int resource;               //定义资源文件(即传过来的gridviewdemo_item_layout.xml文件)
    20     private List<GridViewStudent> list; //定义list集合,类型为GridViewStudent
    21     private LayoutInflater inflater;    //定义装载布局
    22     /*
    23      * 全参构造方法,为类中的属性初始化
    24      */
    25     public GridViewDemoAdapter(Context context,int resource,List<GridViewStudent> list){
    26         this.context = context;
    27         this.resource = resource;
    28         this.list = list;
    29         inflater = LayoutInflater.from(context);//初始化LayoutInflater
    30     }
    31     /*
    32      * 获取item个数
    33      */
    34     @Override
    35     public int getCount() {
    36         //如果list集合不为空,则返回集合大小,否则返回0
    37         if(list != null){
    38             return list.size();
    39         }
    40         return 0;
    41     }
    42     /*
    43      * 获取item
    44      */
    45     @Override
    46     public Object getItem(int position) {
    47         return list.get(position);
    48     }
    49     /*
    50      * 获取itemid
    51      */
    52     @Override
    53     public long getItemId(int position) {
    54         return 0;
    55     }
    56     /*
    57      *返回一个布局
    58      */
    59     @Override
    60     public View getView(int position, View convertView, ViewGroup parent) {
    61         if(convertView==null){
    62             convertView = inflater.inflate(resource, null);
    63         }
    64         TextView tv_showgvitemtxt = (TextView)convertView.findViewById(R.id.tv_showgvitemtxt);
    65         ImageView iv_showgvitemimg = (ImageView)convertView.findViewById(R.id.iv_showgvitemimg);
    66         tv_showgvitemtxt.setText(list.get(position).getName());
    67         iv_showgvitemimg.setImageResource(list.get(position).getPhoto());
    68         return convertView;
    69     }
    70 
    71 }
     1 package com.example.activity;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import android.app.Activity;
     7 import android.os.Bundle;
     8 import android.widget.GridView;
     9 
    10 import com.example.adapter.GridViewDemoAdapter;
    11 import com.example.entity.GridViewStudent;
    12 
    13 public class GridViewDemoActivtiy extends Activity {
    14     private GridView gv_showinfo = null;    //声明对象
    15 
    16     private List<GridViewStudent> list = new ArrayList<GridViewStudent>();// 声明list集合,用于存储数据
    17 
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         super.setContentView(R.layout.gridviewdemo_layout);// 设置容器,
    22         gv_showinfo = (GridView) super.findViewById(R.id.gv_showinfo);// 初始化gridview
    23         
    24         //往list中添加值
    25         GridViewStudent gvs1 = new GridViewStudent(R.drawable.ic_launcher, "张三");
    26         list.add(gvs1);
    27         GridViewStudent gvs2 = new GridViewStudent(R.drawable.ic_launcher, "李四");
    28         list.add(gvs2);
    29         GridViewStudent gvs3 = new GridViewStudent(R.drawable.ic_launcher, "王五");
    30         list.add(gvs3);
    31         GridViewStudent gvs4 = new GridViewStudent(R.drawable.ic_launcher, "赵六");
    32         list.add(gvs4);
    33         GridViewStudent gvs5 = new GridViewStudent(R.drawable.ic_launcher, "王二");
    34         list.add(gvs5);
    35         GridViewStudent gvs6 = new GridViewStudent(R.drawable.ic_launcher, "钱七");
    36         list.add(gvs6);
    37         //设置Adapter
    38         GridViewDemoAdapter gridViewAdapter = new GridViewDemoAdapter(
    39                 GridViewDemoActivtiy.this,
    40                 R.layout.gridviewdemo_item_layout,
    41                 list);
    42         gv_showinfo.setAdapter(gridViewAdapter);
    43     }
    44 }

    运行效果:

  • 相关阅读:
    猜拳游戏
    python2.7安装paramiko模板(windows)
    python socket编程(初级)
    Python2.7怎么安装MySQLdb模板(Windows32)
    Python的用户交互模式
    一个java程序员自学IOS开发之路(三)
    一个java程序员自学IOS开发之路(二)
    一个java程序员自学IOS开发之路(一)
    win 7 取得最高权限
    Multiset ------ 多重集合
  • 原文地址:https://www.cnblogs.com/zhengweicong/p/3213483.html
Copyright © 2011-2022 走看看