GridView的实现

代码实现后界面如图:

一。xml文件

1.<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/relativelayout">

<TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="当前时间:"
        android:textSize="16dp" />

<GridView
        android:id="@+id/gv1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/text1"
        android:columnWidth="90dp"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:stretchMode="spacingWidthUniform"
        android:verticalSpacing="5dp" >

</GridView>

<TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/text1"
        android:text="----------"
        android:textSize="16dp" />

</RelativeLayout>

(注text是当前时间显示,不用管,直接一个GridView即可)

2.每个图标的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

<ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="4dp"
        android:scaleType="fitXY"
        android:layout_gravity="center"/>

<TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"/>

</LinearLayout>

二。界面很简单,下面是MainAcyivity代码:

1.public class MainActivity extends Activity {

GridView gridview;
    PictureAdapter adapter;
    public static int colorcolor=Color.WHITE;
    int[] images=new int[]{R.drawable.newdate,R.drawable.beiwang,R.drawable.newout,R.drawable.newin,R.drawable.alldate,R.drawable.allbeiwang,R.drawable.allout,R.drawable.allin,R.drawable.personmanager,R.drawable.game,R.drawable.chat,R.drawable.relax,R.drawable.seeitlogo,R.drawable.aboutflag,R.drawable.settings,R.drawable.out};
    String[] titles=new String[]{"写日记","写备忘","新增支出","新增收入","我的日记","我的备忘","总支出","总收入","个人管理","游戏娱乐","聊天室","最简浏览器","待开发。。。","关于我","系统设置","退出"};
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gridview=(GridView)findViewById(R.id.gv1);
        adapter=new PictureAdapter(titles,images,this);
        gridview.setAdapter(adapter);
        gridview.setOnItemClickListener(new OnItemClickListener() {

@Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                Intent intent=null;
                switch(arg2){
                case 0:intent=new Intent(MainActivity.this,newDate.class);
                       startActivity(intent);
                       finish();
                       break;
                case 1:intent=new Intent(MainActivity.this,newMark.class);
                       startActivity(intent);
                       finish();
                       break;
                case 2:intent=new Intent(MainActivity.this,newOut.class);
                       startActivity(intent);
                       finish();
                       break;
                case 3:intent=new Intent(MainActivity.this,newIn.class);
                       startActivity(intent);
                       finish();
                       break;
                case 4:intent=new Intent(MainActivity.this,allDate.class);
                       startActivity(intent);
                       finish();
                       break;
                case 5:intent=new Intent(MainActivity.this,allMark.class);
                       startActivity(intent);
                       finish();break;
                case 6:intent=new Intent(MainActivity.this,allOut.class);
                       startActivity(intent);
                       finish();
                       break;
                case 7:intent=new Intent(MainActivity.this,allIn.class);
                       startActivity(intent);
                       finish();
                       break;
                case 8:intent=new Intent(MainActivity.this,PersonManager.class);
                       startActivity(intent);
                       finish();
                       break;
                case 9:intent=new Intent(MainActivity.this,Game.class);
                       startActivity(intent);
                       finish();
                       break;
                case 10:intent=new Intent(MainActivity.this,Chat.class);
                       startActivity(intent);
                       finish();
                       break;
                case 11:intent=new Intent(MainActivity.this,WebGo.class);
                        startActivity(intent);
                        finish();
                        break;
                case 12:intent=new Intent(MainActivity.this,TabsFrame.class);
                        startActivity(intent);
                        finish();
                        break;    
                case 13:intent=new Intent(MainActivity.this,Aboutauthor.class);
                        startActivity(intent);
                        finish();
                        break;
                case 14:MainActivity.this.openOptionsMenu();
                        break;
                case 15:showdialog(MainActivity.this);
                        break;
                    
                }
                
            }
        });

}

2.PictureAdapter类来自BaseAdapter自己写:

package com.example.licaizhuanjia;

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

import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class PictureAdapter extends BaseAdapter {

private List<Picture> pictures;
    private LayoutInflater inflater;
    public static ViewHolder vh;
    public PictureAdapter(String[] titles,int[] images,Context context){
        super();
        pictures=new ArrayList<Picture>();
        inflater=LayoutInflater.from(context);
        for(int i=0;i<images.length;i++){
            Picture picture=new Picture(titles[i],images[i]);
            pictures.add(picture);
        }
        
    }
    public int getCount() {
        // TODO Auto-generated method stub
        if(null!=pictures){
            return pictures.size();
        }
        else
            return 0;
    }

@Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return pictures.get(arg0);
    }

@Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }

@Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub
        if(arg1==null){
            arg1=inflater.inflate(R.layout.gv1image, null);
            vh=new ViewHolder();
            vh.title=(TextView)arg1.findViewById(R.id.textview);
            vh.image=(ImageView)arg1.findViewById(R.id.imageview);
            arg1.setTag(vh);
        }
            else
                vh=(ViewHolder)arg1.getTag();
        vh.title.setText(pictures.get(arg0).getTitle());
        settextcolor(MainActivity.colorcolor);
        vh.image.setImageResource(pictures.get(arg0).getImage());
        return arg1;
    }

public static void settextcolor(int color){
        vh.title.setTextColor(color);
    }
}

3.Picture类

package com.example.licaizhuanjia;

public class Picture {
    private String title;
    private int image;
    public Picture(){
        super();
    }
    public Picture(String title,int image){
        super();
        this.title=title;
        this.image=image;
    }
    public void setImage(int image){
        this.image=image;
    }
    public void setTitle(String title){
        this.title=title;
    }
    public int getImage(){
        return image;
    }
    public String getTitle(){
        return title;
    }
}

4.ViewHolder类

package com.example.licaizhuanjia;

import android.widget.ImageView;
import android.widget.TextView;

public class ViewHolder {
    public TextView title;
    public ImageView image;

}

(ps:可以吧picture类和ViewHolder类写进PictureAdapter类,一样的效果)

时间: 2024-10-09 10:39:51

GridView的实现的相关文章

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

XAF 如何从Excel复制多个单元格内容到GridView(收藏)

how to paste some excel content to xtragrid? 1.相關資料 http://community.devexpress.com/forums/t/36684.aspx http://community.devexpress.com/forums/t/58611.aspx using System; using DevExpress.ExpressApp; using DevExpress.ExpressApp.Actions; using DevExpre

使用GridView和SimpleAdapter实现手机界面常见的九宫格

首先是两个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的GridView和Gallery

GridView: activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height=&q

可拖动GridView的实现,类似支付宝界面

1.概述 之前实现过一个仿支付宝界面的代码,可拖动网格视图.其实实现的原理网上都可以找到,我也是参考网上实现的方法,实现了自己需要的界面.并对实现的原理和方法进行了分析,现在进行总结,放太久都快忘记自己做过这回事了.原理和实现网上大部分地方都可以找到,我是根据自己的理解进行分析的,现在对之前的工作进行总结,了解实现的基本过程和方法.GridView拖动的源码来源于网上,根据需求修改成了需要的效果,下面简单说明下实现过程. 在说明实现之前,先上一张总体的界面效果图: 为了更好说明程序种各个变量的意

GridView控件详解

一.介绍 GridView控件一表格形式显示数据源中的数据.提供对列进行排序.分页以及编辑.删除单个记录的功能. 二.绑定数据源 第一种使用DataSourceID属性.可以直接把GridView控件绑定到数据源控件上,以利用数据源控件的功能实现编辑.删除.排序.分页等功能.(初级) 第二种可以绑定到ADO.NET数据集和数据读取器对象上,但需要为所有功能编写后台代码.(一般使用这种方式) private void gridViewBind() { //获取GridView排序数据列及排序方向

GridView--scroolview嵌套listview和gridview

我们在真实项目中通常会遇到ListView或者GridView嵌套在ScrollView中问题.但是做的时候会发现,一旦两者进行嵌套,即会发生冲突.得不到我们希望的效果.由于ListView和GridView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,那么里面的ScrollView高度计算就会出现问题.我们也就无法得到想要的效果.下面进入正题,我们将分别讨论ScrollView中嵌套ListView和FGridView的情况: 核心解决方案: 重写Li

Win10开发:实现GridView选定项的反选

今天在开发Flickr下载器的时候遇到了要反选GridView选中项的反选问题,花了好一会儿才解决,所以写篇博文记录一下. 我觉得我的实现方法很Low,真的是很愚蠢的办法.不刚好我就是个愚蠢的人,只想到了这么个愚蠢的办法.如果读者有更优的办法欢迎指教. 废话有点多,进入正题. 先说说几个相关的GridView的属性或方法: 属性: SelectionMode:项的选择模式,有四个可选值.默认为单选,即Single.多选为:Multiple SelectedItem:获取或设置选定项,可读写 Se

Android的GridView和ScrollView的嵌套

来源于回答频道答题,因此内容都是基于回答频道的原题布局进行 1.布局文件如下 文件名:testxm.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" andr

解决GridView动态设置宽高导致第一个item点击不响应或显示不正常问题

最近做项目的时候遇到了2次这个问题,现在分享一下经验 一.问题 问题代码: </pre><p><pre name="code" class="java">@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub final ViewHolder holder