您的位置:首页 > 移动开发 > Android开发

Android GridView控件学习

2015-09-14 15:57 453 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android GridView学习