android学习笔记之GridView的使用
除了listview会使用适配器外,还有一种就是GridView,listview是单列多行的显示形式,适用于多项目的查看。而GridView是多行多列的显示形式,一般用在查看图片样式的activity中。一个小demo。每一项都是一个图片下面一行文字。
GirdView的一些属性:
android:numColumns="auto_fit" --------列数设置为自动
android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth"------缩放与列宽大小同步
android:verticalSpacing="10dp"----------垂直边距
android:horizontalSpacing="10dp"-------水平边距
这里使用自定义适配器,
GridViewActivity
public class GridViewActivity extends Activity {
    private GridView gridView;
    private GridViewAdapter adapter;
    private List<Map<String,Object>> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grid_view);
        gridView = (GridView)findViewById(R.id.gridView);
        list = new ArrayList<Map<String, Object>>();
        adapter = new GridViewAdapter(this,getData());
        gridView.setAdapter(adapter);
    }
GridViewAdapter
在这里有一个比较重要的就是设置gridview的行高,
convertView.setLayoutParams(new GridView.LayoutParams(100, 100));//重点行 但是这个属性android:columnWidth不知道为什么不能起作用。无论设置多少都不变化
 class GridViewAdapter extends BaseAdapter{
        private LayoutInflater mLayoutIntfalter;
        private Context context;
        private List<Map<String,Object>> list;
        public GridViewAdapter(Context context,List<Map<String,Object>> list){
            this.context = context;
            this.list = list;
            this.mLayoutIntfalter = LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            return list.size();
        }
        @Override
        public Object getItem(int position) {
            return list.get(position);
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHold viewHold=null;
            if(convertView == null){
                viewHold = new ViewHold();
                convertView = mLayoutIntfalter.inflate(R.layout.gridviewitemlayout,null);
                viewHold.image =(ImageView)convertView.findViewById(R.id.imageView2);
                viewHold.textView = (TextView)convertView.findViewById(R.id.textView4);
                convertView.setTag(viewHold);
            }else{
                viewHold =(ViewHold) convertView.getTag();
            }
            int id = Integer.parseInt(list.get(position).get("pic").toString());
            viewHold.image.setImageResource(id);
            viewHold.textView.setText(list.get(position).get("titel").toString());
            convertView.setLayoutParams(new GridView.LayoutParams(100, 100));//重点行
            return convertView;
        }
        public final class ViewHold{
            public ImageView image;
            public TextView textView;
        }
gridviewitemlayout.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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2" /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView4" />
</LinearLayout>
android学习笔记之GridView的使用的更多相关文章
- android学习笔记14——GridView、ImageSwitcher
		GridView--网格视图.ImageSwitcher--图像切换器 ==> GridView,用于在界面上按行.列的分布形式显示多个组件:GridView和ListView父类相同——Abs ... 
- Android学习笔记之GridView的使用具体解释
		(1)创建布局代码例如以下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ... 
- 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
		目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ... 
- 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式
		可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ... 
- 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter
		目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ... 
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
		学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ... 
- Android学习笔记进阶之在图片上涂鸦(能清屏)
		Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ... 
- android学习笔记36——使用原始XML文件
		XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ... 
- Android学习笔记之JSON数据解析
		转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ... 
随机推荐
- 使用ReflectionToStringBuilder实现toString方法
			使用ReflectionToStringBuilder实现toString方法 org.apache.commons.lang.builder.ReflectionToStringBuilder是co ... 
- 懒人的小技巧, 批处理修改IP
			相信很多人都有这样的麻烦, 工作单位的IP网段与住的不一致, 自己的笔记本在单位和回家的时候每次都要更改IP, 很麻烦, 偷个懒, 做了个批处理来修改IP,方便一点. 还有就是可以把工作的时候才需要 ... 
- VIM基础知识整理(附思维导图)
			这是当时初学VIM后做的一个思维导图,图片稍大,所以从freemind导出了html文本po在下面:图片在最下方,放大可清晰浏览. VIM 普通模式 普通编辑命令 功能:浏览,普通编辑 x:删除光标所 ... 
- mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程)
			写在最前 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生M ... 
- VB6之SendMessage模拟拖放事件
			原文链接:http://hi.baidu.com/coo_boi/item/e1e0f5ab45bddbdd5af191df 网上找了个C++的翻一下,原文链接:http://www.cnblogs. ... 
- tp框架---验证码详解
			很多注册登录界面都会验证码,用tp如何实现验证码的功能呢? 在tp中:Think\Verify类可以支持验证码的生成和验证功能. 首先,看一下逻辑: (1)如何生成?------ 先做Yanzheng ... 
- Struts框架之 执行流程  struts.xml 配置详细
			1.执行流程 服务器启动: 1. 加载项目web.xml 2. 创建Struts核心过滤器对象, 执行filter → init() struts-default.xml, 核心功能的初 ... 
- 配置LAMP实现WordPress
			环境说明: 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP) CentOS 7.3.Apache 2.4.6.MariaDB 5.5.52.PHP 5.4.1 ... 
- QT QT creator QTsdk的区别
			Qt是一个跨平台的C++图形用户界面应用程序框架.它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能.Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程. QT Creator 跨平台 ... 
- mysql的并发处理机制_上篇
			回来写博客,少年前端时间被django迷了心魄 如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所 ... 
