Adnroid组件的使用:ListView与GridView

来源:互联网 发布:攻壳机动队95 2.0知乎 编辑:程序博客网 时间:2024/05/22 00:08

Adnroid中ListView(列表视图)与GridView(网格视图)的使用

1、ListView的使用

1.1

ListView的功能就像之前的Spinner、AutoCompleteTextView中添加额外的资源文件一样,可以把其他资源文件的信息作为一个整体加载到ListView的子列表中。
1)、新建一个listview.xml文件,文件中只有一个ListView组件,组件中的信息需要通过另外一个布局文件加载到ListView中,代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <ListView         android:id="@+id/lv_showlistviewitem"        android:layout_width="match_parent"        android:layout_height="wrap_content">     </ListView></LinearLayout>

2)、新建listview_extra_layou.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <ImageView         android:id="@+id/iv_showimage"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/d1"/>    <TextView        android:id="@+id/tv_showtextviewinfo"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/app_name"/>    </LinearLayout>

3)、新建Activity类,ListViewDemoActivity,完整代码如下:
package com.example.basiccomponent2;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter;public class ListViewDemoActivity extends Activity {    private ListView lv_showlistviewitem = null;    private List<Map<String,String>> list = new ArrayList<Map<String,String>>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        super.setContentView(R.layout.listview_layout);        lv_showlistviewitem = (ListView)super.findViewById(R.id.lv_showlistviewitem);        //获得listview_extra_layout.xml各组件id名        String id_name[] ={                "iv_showimage",                "tv_showtextviewinfo"        };         //获得listview_extra_layout.xml中id名对应的R文件id        int id_rid[] = {                R.id.iv_showimage,                R.id.tv_showtextviewinfo        };        //定义图片数组数据        int images[] = {                R.drawable.d1,                R.drawable.d2,                R.drawable.d3        };        //定义数组数据        String info[] = {                "文本1","文本2"        };        //循环把图片和文本加入到map集合中,再把map集合数据添加到list集合中。        for(int i = 0; i<info.length;i++){            Map<String,String> map =new  HashMap<String,String>();            map.put("iv_showimage", images[i]+"");            map.put("tv_showtextviewinfo", info[i]);            list.add(map);        }        //通过adpter加载数据        SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.listview_extra_layout, id_name, id_rid);        //组件设置适配器        lv_showlistviewitem.setAdapter(adapter);    }}

4)、运行效果:


2、GridView的使用:

2.1、新建布局文件:

1)、新建布局文件gridview_layout.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <GridView         android:id="@+id/gv_showinfo"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:numColumns="3"/></LinearLayout>

2)、建立GridView的item布局文件gridview_item_layout.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:orientation="vertical" >        <ImageView        android:id="@+id/iv_showgvitemimg"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher"/>    <TextView        android:id="@+id/tv_showgvitemtxt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/></LinearLayout>

3)、建立vo类GridViewStudent,用于保存图片和名字,代码如下:
package com.example.entity;public class GridViewStudent {    private int photo; // 存放学生图片id    private String name; // 存放学生姓名    /*     * 无参构造方法     */    public GridViewStudent(){}    /*     * 全参构造方法     */    public GridViewStudent(int photo,String name){        this.photo = photo;        this.name = name;    }    /*     * gettter方法     */    public int getPhoto() {        return photo;    }    /*     * settter方法     */    public void setPhoto(int photo) {        this.photo = photo;    }    /*     * gettter方法     */    public String getName() {        return name;    }    /*     * settter方法     */    public void setName(String name) {        this.name = name;    }}

4)、建立Adapter类GridViewDemoAdapter类,代码如下:
package com.example.adapter;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.activity.R;import com.example.entity.GridViewStudent;public class GridViewDemoAdapter extends BaseAdapter {    private Context context;            //定义上下文属性(即传过来的GridViewDemoActivity类)    private int resource;               //定义资源文件(即传过来的gridviewdemo_item_layout.xml文件)    private List<GridViewStudent> list; //定义list集合,类型为GridViewStudent    private LayoutInflater inflater;    //定义装载布局    /*     * 全参构造方法,为类中的属性初始化     */    public GridViewDemoAdapter(Context context,int resource,List<GridViewStudent> list){        this.context = context;        this.resource = resource;        this.list = list;        inflater = LayoutInflater.from(context);//初始化LayoutInflater    }    /*     * 获取item个数     */    @Override    public int getCount() {        //如果list集合不为空,则返回集合大小,否则返回0        if(list != null){            return list.size();        }        return 0;    }    /*     * 获取item     */    @Override    public Object getItem(int position) {        return list.get(position);    }    /*     * 获取itemid     */    @Override    public long getItemId(int position) {        return 0;    }    /*     *返回一个布局     */    @Override    public View getView(int position, View convertView, ViewGroup parent) {        if(convertView==null){            convertView = inflater.inflate(resource, null);        }        TextView tv_showgvitemtxt = (TextView)convertView.findViewById(R.id.tv_showgvitemtxt);        ImageView iv_showgvitemimg = (ImageView)convertView.findViewById(R.id.iv_showgvitemimg);        tv_showgvitemtxt.setText(list.get(position).getName());        iv_showgvitemimg.setImageResource(list.get(position).getPhoto());        return convertView;    }}

5)、新建Activity类GridViewDemoActivtiy,代码如下:
package com.example.activity;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.GridView;import com.example.adapter.GridViewDemoAdapter;import com.example.entity.GridViewStudent;public class GridViewDemoActivtiy extends Activity {    private GridView gv_showinfo = null;    //声明对象    private List<GridViewStudent> list = new ArrayList<GridViewStudent>();// 声明list集合,用于存储数据    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        super.setContentView(R.layout.gridviewdemo_layout);// 设置容器,        gv_showinfo = (GridView) super.findViewById(R.id.gv_showinfo);// 初始化gridview                //往list中添加值        GridViewStudent gvs1 = new GridViewStudent(R.drawable.ic_launcher, "张三");        list.add(gvs1);        GridViewStudent gvs2 = new GridViewStudent(R.drawable.ic_launcher, "李四");        list.add(gvs2);        GridViewStudent gvs3 = new GridViewStudent(R.drawable.ic_launcher, "王五");        list.add(gvs3);        GridViewStudent gvs4 = new GridViewStudent(R.drawable.ic_launcher, "赵六");        list.add(gvs4);        GridViewStudent gvs5 = new GridViewStudent(R.drawable.ic_launcher, "王二");        list.add(gvs5);        GridViewStudent gvs6 = new GridViewStudent(R.drawable.ic_launcher, "钱七");        list.add(gvs6);        //设置Adapter        GridViewDemoAdapter gridViewAdapter = new GridViewDemoAdapter(                GridViewDemoActivtiy.this,                R.layout.gridviewdemo_item_layout,                list);        gv_showinfo.setAdapter(gridViewAdapter);    }}

6)、运行效果:
原创粉丝点击