GridView简单应用

package com.example.gridviewdemo;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
    private GridView gd;
    private List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
    private SimpleAdapter sa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gd = (GridView) findViewById(R.id.gd);
        Field[] fieds = R.drawable.class.getDeclaredFields();//利用反射得到图片
        for (int i = 0; i < fieds.length; i++) {
            Map<String, Integer> map = new HashMap<String, Integer>();
            try {
                if(fieds[i].getName().startsWith("pic"))//判断图片开头是不是pic
                map.put("img", fieds[i].getInt(R.drawable.class));//放进map里
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            list.add(map);
        }
        sa = new SimpleAdapter(MainActivity.this, list, R.layout.grid_layout,
                new String[] { "img" }, new int[] { R.id.img });
        gd.setAdapter(sa);
        //给网格视图设置点击事件
        gd.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                ImageView showImg = new ImageView(MainActivity.this);
                Map<String, Integer> map1 = (Map<String, Integer>) sa
                        .getItem(position);
                showImg.setImageResource(map1.get("img"));
                //设置图片大小
                showImg.setLayoutParams(new LinearLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            //把这个图片用对话框显示出来
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("选择的图片是")
                .setView(showImg)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }
                }).show();
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
时间: 2024-10-22 12:56:06

GridView简单应用的相关文章

Android零基础入门第45节:GridView简单使用

前面一共用了8期来学习ListView列表的相关操作,其实学习的ListView的知识完全适用于AdapterView的其他子类,如GridView.Spinner.AutoCompleteTextView等组件,那么接下来分别来学习一下这些列表组件,本期先学习GridView的使用. 一.认识GridView 前面学的ListView是列表, 这里的GridView就是显示网格,用于在界面上按行.列分布的方式来显示多个组件. GridView 和 ListView 有共同的父类:AbsList

Asp.net中GridView使用详解(很全,很经典)

http://blog.csdn.net/hello_world_wusu/article/details/4052844 Asp.net中GridView使用详解 效果图参考:http://hi.baidu.com/hello%5Fworld%5Fws/album/asp%2Enet中以gv开头的图片 l         GridView无代码分页排序 l         GridView选中,编辑,取消,删除 l         GridView正反双向排序 l         GridVi

可以拖动交换item位置的GridView

欢迎关注Android技术分享公众号(小红人). 这篇文章是基于夏安明写的一个可以移动item的Demo改写的,因为原代码有一些BUG,比如adapter不能使用ViewHolder优化(这个问题应该是最大的问题)再比如不能使用上下拉刷新功能(这个是我额外添加的功能,不知道的可以去看看开源中国手机客户端的便签功能) 在Android开发中,我们常常用到ListView和GridView,而有的时候系统的ListView,GridView并不能满足我们的需求,所以我们需要自己定义一个ListVie

Asp.net中GridView使用详解

l         GridView无代码分页排序 l         GridView选中,编辑,取消,删除 l         GridView正反双向排序 l         GridView和下拉菜单DropDownList结合 l         GridView和CheckBox结合 l         鼠标移到GridView某一行时改变该行的背景色方法一 l         鼠标移到GridView某一行时改变该行的背景色方法二 l         GridView实现删除时弹出

Asp.net中GridView使用详解(很全,很经典 转来的)

Asp.net中GridView使用详解 效果图参考:http://hi.baidu.com/hello%5Fworld%5Fws/album/asp%2Enet中以gv开头的图片 l         GridView无代码分页排序 l         GridView选中,编辑,取消,删除 l         GridView正反双向排序 l         GridView和下拉菜单DropDownList结合 l         GridView和CheckBox结合 l         

GridView的详细用法

l GridView无代码分页排序 l GridView选中,编辑,取消,删除 l GridView正反双向排序 l GridView和下拉菜单DropDownList结合 l GridView和CheckBox结合 l 鼠标移到GridView某一行时改变该行的背景色方法一 l 鼠标移到GridView某一行时改变该行的背景色方法二 l GridView实现删除时弹出确认对话框 l GridView实现自动编号 l GridView实现自定义时间货币等字符串格式 l GridView实现用“.

android 有弹性的ScrollView 简单实现,与处理ScrollView和ListView,GridView之间的冲突

处理ScrollView和ListView,GridView之间的冲突, 最好的办法就是继承这两个类,重写他们的onMeasure方法即可: ListView: import android.widget.ListView; /** * ScrollView中嵌入ListView,让ListView全显示出来 * @author John * */ public class MyListView extends ListView{ public MyListView(android.conten

GridView和ListView简单使用

现在在做一个小项目,用到了基础的GridView和ListView.在此做一个记录.项目的主界面是用DrawerLayout实现侧滑,顶部栏使用ToolBar,SlidingTabLayout和ViewPager实现左右切换页卡,多个Fragment通过Adapter适配到ViewPager上.其中两个页卡就是用的GridView和ListView.其他控件会另起新的随笔来写. 两个Tab的效果如下    比较简单直接上代码. 第一个Tab,布局就是一个GridView,里面的item是Imag

Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)

最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很容易找到答案,即覆写onMeasure方法,然后设置高度的MeasureSpec.但是宽度问题确实没有什么资料,这里所说的宽度问题是比如GridView的列数为3,那么即使只有一张图片,gridview的宽度也是match_parent的,导致用户点击在图片范围外但是在gridview范围内时Lis