Android GridView控件学习

GridView:

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。

电影票预售表格效果,纯文字


res/values/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="seat">
        <item>A1 满</item>
        <item>A2 满</item>
        <item>A3 满</item>
        <item>B1 空</item>
        <item>B2 空</item>
        <item>B3 满</item>
        <item>C1 空</item>
        <item>C2 满</item>
        <item>C3 空</item>
    </string-array>
</resources>

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="GridView电影预售表格效果"
            />
    <GridView
            android:id="@+id/gridView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:numColumns="3">


    </GridView>
</LinearLayout>


package com.ncsyeyy.YeyyGridView;


import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.GridView;


public class MyActivity extends Activity {


    private GridView gridView;
    private ArrayAdapter<CharSequence> adapter;


    /**
     * GridView的一些特殊属性:


     1.android:numColumns=”auto_fit”   //GridView的列数设置为自动
     2.android:columnWidth=”90dp "       //每列的宽度,也就是Item的宽度
     3.android:stretchMode=”columnWidth"//缩放与列宽大小同步
     4.android:verticalSpacing=”10dp”          //两行之间的边距
     5.android:horizontalSpacing=”10dp”      //两列之间的边距
     6.android:cacheColorHint="#00000000" //去除拖动时默认的黑色背景
     7.android:listSelector="#00000000"        //去除选中时的黄色底色
     8.android:scrollbars="none"                   //隐藏GridView的滚动条
     9.android:fadeScrollbars="true"             //设置为true就可以实现滚动条的自动隐藏和显示
     10.android:fastScrollEnabled="true"      //GridView出现快速滚动的按钮(至少滚动4页才会显示)
     11.android:fadingEdge="none"                //GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色)
     12.android:fadingEdgeLength="10dip"   //定义的衰落(褪去)边缘的长度
     13.android:stackFromBottom="true"       //设置为true时,你做好的列表就会显示你列表的最下面
     14.android:transcriptMode="alwaysScroll" //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内
     15.android:drawSelectorOnTop="false"  //点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false)
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findView();
        setGridView();


    }
    private void setGridView(){
        //将可选内容与ArrayAdapter连接起来
        adapter = ArrayAdapter.createFromResource(this, R.array.seat, android.R.layout.simple_gallery_item);
        gridView.setAdapter(adapter);
    }
    private void findView(){
        gridView = (GridView) findViewById(R.id.gridView);
    }
}




GridView→图片文字适配
第一步:布局文件GridView控件,注意限制行数
第二步:对应的item.xml布局文件,注意布局中图片文字的高度和宽度
第三步:javaBean实体类,构造函数,调用函数
第四步:adapter,自定义适配器,适配item view
第五步:activity来实现功能


→findViewById
→得到数据
    →listView 适配


第一步:布局文件GridView控件,注意限制行数
gridview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">


    <GridView
            android:id="@+id/gridView_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:numColumns="3"/>
</LinearLayout>



第二步:对应的item.xml布局文件,注意布局中图片文字的高度和宽度
girdview_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
<ImageView
        android:id="@+id/gridView_item_image"
        android:layout_width="60dp"
           android:layout_height="60dp"/>
    <TextView
            android:id="@+id/gridView_item_name"
            android:layout_width="60dp"
              android:layout_height="wrap_content"
            android:gravity="center"/>
</LinearLayout>


第三步:javaBean实体类,构造函数,调用函数
MyFile javaBean文件
package com.ncsyeyy.YeyyGridView;


/**
 * Created by yeyy on 9/11/2015.
 */
public class MyFile {
    //    实体类,给gridView设置数据
    public String FileName;
    public int ImageId;


    public MyFile() {
        super();
    }


    public MyFile(String fileName, int imageId) {
        super();
        FileName = fileName;
        ImageId = imageId;
    }
}



第四步:adapter,自定义适配器,适配item view


//        一般如果只有几个固定的item,就用此方法写,当你需要加载很多数据item的时候,就需要优化了
//        方法一 把布局文件填充成一个View对象
//        View view=View.inflate(context,R.layout.home_gridview_item,null);//把布局文件填充成一个view对象
//        方法二
//        LayoutInflater inflater=LayoutInflater.from(context);//获取布局填充器对象
//        View view1 = inflater.inflate(R.layout.home_gridview_item,null);//使用布局填充器填充布局文件
//      方法三
//        LayoutInflater inflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
//        View view2 = inflater.inflate(R.layout.home_gridview_item,null);


package com.ncsyeyy.YeyyGridView;


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 java.util.List;


/**
 * Created by yeyy on 9/11/2015.
 */
public class FileListAdapter extends BaseAdapter{
//    定义Context
    private Context context;
//    定义要显示的myFile列表
    private List<MyFile> fileList;


//    FileListAdapter构造方法
public FileListAdapter(Context context, List<MyFile> fileList) {
    this.context = context;
    this.fileList = fileList;
}
//    获取显示的条目数量
@Override
    public int getCount() {
        return fileList.size();
    }
//获取列表中的单个对象
    @Override
    public Object getItem(int position) {
        return fileList.get(position);
    }
//获取雷彪对象的Id
    @Override
    public long getItemId(int position) {
        return position;
    }
//构造每一个item的View视图
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
//        第一位置占位符类的对象
        ViewHolder viewHolder=new ViewHolder();
        if(convertView==null){
//            初始化当前view的布局视图
            convertView= LayoutInflater.from(context).inflate(R.layout.gridview_item,null);
        }
//        获取到对应的控件对象
        viewHolder.fileImage=(ImageView) convertView.findViewById(R.id.gridView_item_image);
        viewHolder.fileName=(TextView) convertView.findViewById(R.id.gridView_item_name);
//给控件对象设置相应的内容
        viewHolder.fileImage.setBackgroundResource(fileList.get(position).ImageId);
        viewHolder.fileName.setText(fileList.get(position).FileName);
        return convertView;
    }
//    定义内部类作为占位符组合
    class ViewHolder{
        ImageView fileImage;
        TextView fileName;
}


}


第五步:activity来实现功能


→findViewById
→得到数据
    →listView 适配
package com.ncsyeyy.YeyyGridView;


import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;


import java.util.ArrayList;
import java.util.List;


/**
 * Created by yeyy on 9/11/2015.
 */
public class GridViewActivity extends Activity {


    private GridView gv;
//    定义用来存储需要显示的对象列表
    private List<MyFile> fileList=new ArrayList<MyFile>();
    private FileListAdapter fileListAdapter;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridview);
        findView();
        setData();
        setGridView();
    }
    private void setData(){
//        构造模拟数据
        fileList.add(new MyFile("a",R.drawable.a));
        fileList.add(new MyFile("b",R.drawable.b));
        fileList.add(new MyFile("c",R.drawable.c));
        fileList.add(new MyFile("d",R.drawable.d));
        fileList.add(new MyFile("e",R.drawable.e));
        fileList.add(new MyFile("f",R.drawable.f));
        fileList.add(new MyFile("g",R.drawable.g));
        fileList.add(new MyFile("h",R.drawable.h));
    }
private void setGridView(){
    fileListAdapter = new FileListAdapter(this,fileList);
    gv.setAdapter(fileListAdapter);
}
    private void findView(){
        gv = (GridView) findViewById(R.id.gridView_image);
    }
}


源码地址:http://download.csdn.net/detail/csdnyuandaimaxuexi/9107089


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值