创建Gridview视图

细想自己接触android也有一个月了,一直想写blog来敦促自己的进步,供自己之后翻阅,同时想着自己在编写例子的时候会出现各种问题,所以创建blog来记录自己的学习进程,也可以作分享之用。好了,废话不多说了,这篇blog主要是讲解的如何创建gridview的视图。如下图效果所示:

要实现图中的功能,

先介绍gridview几个属性:

GridView的一些属性

android:numColumns="auto_fit"- - - - - 列数设置为自动

android:columnWidth="90dp"- -  - - -每列的宽度,也就是item的宽度

android:stretchMode="columnWidth"- -  - - -缩放与列宽大小同步

android:verticalSpacing ="10dp"- - -  - - -垂直边距

android:horizontalSpacing="10dp"- - - -  - -水平边距

第一步:将案例所需的四个图片(注意名字一定要是英文)copy到res/drawable文件夹下。

第二步:在main_activity中添加一个gridview,其中布局代码如下

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#000"
tools:context="com.example.amos.gridviewdemo.MainActivity">

    <GridView
android:id="@+id/gview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="auto_fit"<span style="white-space:pre">			</span>//列数设置为自动
android:columnWidth="80dp"
android:stretchMode="columnWidth"><span style="white-space:pre">		</span>//将拉伸模式调整跟宽度一样

    </GridView>
</LinearLayout></span>

第三步:因为所做效果图中每个item项中都有一个imageiew和textview的控件,所以我们要单独创建一个item的布局以便传入gridview中。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"<span style="white-space:pre">		</span>//这一项的作用是让imageview控件和textview控件在竖直方向对齐
android:gravity="center"
android:padding="10dp">
    <ImageView
android:src="#9932CC"
android:id="@+id/image"
android:layout_width="60dp"
android:layout_height="60dp" />

    <TextView
android:id="@+id/text"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="文字"/>
</LinearLayout>

第四步:接着就是最关键的在MainActivity中填写代码。主要分为a.准备数据源 b.新建适配器 c.配置适配器

</pre><pre name="code" class="java">import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends Activity {

    private GridView gview;
    private List<Map<String, Object>> data_list;
    private SimpleAdapter sim_adapter;
    private int[] icon = {R.drawable.sns_qqfriends_icon, R.drawable.sns_sina_icon,
            R.drawable.sns_weixin_icon, R.drawable.sns_weixin_timeline_icon};
    private String[] iconName = {"QQ", "Sina", "Weixin", "SNS"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gview = (GridView) findViewById(R.id.gview);
        //新建List
        data_list = new ArrayList<Map<String, Object>>();
        //获取数据
        getData();
        //新建适配器
        String[] from = {"image", "text"};
        int[] to = {R.id.image, R.id.text};
        sim_adapter = new SimpleAdapter(this, data_list, R.layout.item, from, to);
        //配置适配器
        gview.setAdapter(sim_adapter);

    }

    public List<Map<String, Object>> getData() {
//icon和iconName的长度是相同的,这里任选其一就可以
        for (int i = 0; i < icon.length; i++) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("image", icon[i]);
            map.put("text", iconName[i]);
            data_list.add(map);
        }

        return data_list;
    }

}

关于setadapter的用法,可以参见官方的API文档,里面的解释是这样的。

public void setAdapter (ListAdapter adapter)

Sets the data behind this GridView.

Parameters

adapter the adapter providing the grid‘s data

好了,结束,这样就可以直接运行了。

最后,拓展一下,比如现在我有这个图标了,那我怎么样去点击图标,然后让他有效果呢,这种情况下,我们可以插入一个

setOnItemClickListener()的方法。那么现在我们在java代码文件夹下创建两个activity,如下图(这是我随意创建的,目的只是让他有东西能显示)

那么接着在Main_Activity中添加setOnItemClickListener方法,这里我只添加了两个点击事件,如下示:

 gview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                //在这里处理每一个item的单击事件
                switch (position){
                    case 0:
                        startActivity(new Intent(MainActivity.this,AnotherAty.class));
                        break;
                    case 1:
                        startActivity(new Intent(MainActivity.this,LoginActivity.class));
                        break;
                    default:
                        break;

                }

            }
        });

最后,附上我的源码

点击打开链接

时间: 2024-08-02 07:24:58

创建Gridview视图的相关文章

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

创建界面视图的流程

1,创建主窗体 在内存中实例化JFrame对象 通过使用setSize(),setBounds()或者pack()方法给JFrame设置大小 通过使用setTitle()设置标题,setDefaultCloseOperation()设置关闭策略,setLocationRelativeTo()设置主窗体的位置 通过使用setVisible(true)设置组件对象可见 2,设置布局管理器 通过setLayout()设置布局管理器 通过add()语句添加各种组件到布局管理器中 创建界面视图的流程,布布

Cocos2d-X 使用CCTableView创建滚动视图

CCTableView和CCScrollView一样用于创建滚动视图,CCTableView的功能也比较多,创建比较麻烦 实例1:使用CCTableView创建滚动视图 首先创建一个TableView类 TableView.h中的代码 #ifndef __TableView_H__ #define __TableView_H__ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_

创建物化视图详解(图解)

创建物化视图详解 一,什么是物化视图 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 二,作用. 在类似统计功能中,查询操作是无可避免,而这些查询操作如果很频繁,对整体数据库性能是很致命的.而物化视图实现远程数据源与本地数据的实时同步,也就是定时刷新,通过在本地创建物化视图可以大大提高查询效率. 三,流程图: 当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库

openerp创建动态视图-fields_view_get

openerp的视图结构是以XML的格式存放于ir.ui.view表中,属于静态格式,设计之后就固定, 但可以通过在model中重写fields_view_get函数,在视图加载时修改arch属性,动态修改视图的结构 def fields_view_get(self, cr, uid, view_id=None,view_type='form',context=None,toolbar=False,submenu=False): ip_obj = self.pool.get('hr.rule.i

swift:创建集合视图UICollectionView

swift中创建集合视图和OC中差不多,主要是实现UICollectionViewDataSource数据源协议和UICollectionViewDelegateFlowLayout自定义布局协议,其中UICollectionViewDelegateFlowLayout自定义布局协议继承自UICollectionViewDelgate.使用自定义布局,可以设置集合视图单元格的大小.位置.间距等等 例如: let flowLayout = UICollectionViewFlowLayout()

点击textField没有响应与在屏幕上未看到创建的视图问题(UI)

一.点击textField没有响应 (1)textField上面还有视图(如下) UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 220, 40)]; tf.backgroundColor = [UIColor yellowColor]; tf.borderStyle = UITextBorderStyleRoundedRect; [self.window addSubview:tf]; [tf r

iOS创建头部视图

//创建头部视图 +(instancetype)headerViewWithTableView:(UITableView *)tableView{ return [[self alloc]initWithTableView:tableView]; } -(instancetype)initWithTableView:(UITableView *)tableView{ static NSString * indentifier = @"header"; GYLHeaderView * h

创建物化视图

使用物化视图进行汇总管理:1.DBA分析昂贵的SQL查询并创建物化视图 2.商业用户查询表和视图 3.oracle服务器使用物化视图重写SQL查询 create materialized view cust_sales_mv (视图名) pctfree 0 tablespace example             (设置储存操作) storage (initial 1M next 1M pctincrease 0) build deferred