`

Gridview 视图控件的使用

 
阅读更多

 

 Gridview 使用 

 本例子主要用 :

    1 SimpleAdapter 作为适配器加载List<Map>数据  

    2  BaseAdapter 加载List<Map>数据 两种形式作为适配器加载数据

 

package com.example.fragmentdemo1;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

/**
 *  Gridview 使用 
 *  本例子主要用 :
 *    1 SimpleAdapter 作为适配器加载List<Map>数据  
 *    2  BaseAdapter 加载List<Map>数据 两种形式作为适配器加载数据
 */

public class GradViewActivity extends Activity {

	private Integer[] resIds = { R.drawable.bd, R.drawable.qq,
			R.drawable.safari, R.drawable.shezhi, R.drawable.tongxunlu,
			R.drawable.wangyi, R.drawable.weixin, R.drawable.xj, R.drawable.yx,
			R.drawable.zp };

	private String[] name = { "百度", "QQ", "safari", "设置", "通讯录", "网易", "微信",
			"相机", "游戏", "照片" };
	private ArrayList<HashMap<String, Object>> item;// 数据

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.griditeminfo);
		//显示简单的图片列表 
//		showSimpleGrad();
		showBaseAdapterGrad();
	}
	
	/**
	 * 显示grid列表 ,用SimpleAdapter 作为适配器  
	 */
	private void showSimpleGrad() {
		getData() ;//准备数据 
		GridView gridview = (GridView) findViewById( R.id.gridview);
		
		// SimpleAdapter对象,匹配ArrayList中的元素
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, 
				item, //数据来源
				R.layout.gridview, //每一个格子中的布局加载 
				new String[] { "itemImage", "itemName" }, //每一个方格中列的名字,它会与Map中的key相对应 
				new int[] { R.id.itemImage, R.id.itemName }) {//对应着上面参数给的值 
		};
 
	      //添加并且显示  
	      gridview.setAdapter(simpleAdapter);  
	      //添加消息处理  
	      gridview.setOnItemClickListener(new OnItemClickListener(){
				@Override
				public void onItemClick(AdapterView<?> parent, View view,
						int position, long id) {
					//parent.getItemAtPosition( )
					Log.v("gradView", (String)item.get(position ).get("itemName")) ;
                    Toast.makeText(getApplicationContext(),(String) item.get(position ).get("itemName"),Toast.LENGTH_SHORT).show();
				}
	      });  
	}

	
	
	// 准备数据
	public void getData() {
		item = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < resIds.length; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("itemImage", resIds[i]);
			map.put("itemName", name[i]);
			item.add(map);
		}
	}
	
	//使用BaseAdapter
	private void showBaseAdapterGrad() {
		getData() ;//准备数据 
		GridView gridview = (GridView) findViewById( R.id.gridview);
		
		ImageAdapter adapter  = new ImageAdapter(this); 
	    //添加并且显示  
        gridview.setAdapter(adapter);  
       
       //添加消息处理  
       gridview.setOnItemClickListener(new OnItemClickListener(){
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				//parent.getItemAtPosition( ) 取出 相应的数据 
				Log.v("gradView", (String)item.get(position ).get("itemName")) ;
              Toast.makeText(getApplicationContext(),(String) item.get(position ).get("itemName"),Toast.LENGTH_SHORT).show();
			}
      }); 
	}
	
	
	
	  //用BaseAdapter  用作adapter 
	  private class ImageAdapter extends BaseAdapter{  
		    private LayoutInflater mInflater;// 得到一个LayoutInfalter对象用来导入布局
		  
	        //private Context mContext;  
	        public ImageAdapter(Context context) {  
	            //this.mContext=context;  
	            this.mInflater = LayoutInflater.from(context);
	        }  
	        @Override  
	        public int getCount() {  
	            return resIds.length;  
	        }  
	        @Override  
	        public Object getItem(int position) {  
	            return resIds[position];  
	        }  
	  
	        @Override  
	        public long getItemId(int position) {  
	            // TODO Auto-generated method stub  
	            return 0;  
	        }  
	        /**
	         * 每一个小的 方格中的控件的加载 
	         */
	        @Override  
	        public View getView(int position, View convertView, ViewGroup parent) {  
	            //定义一个ImageView,显示在GridView里  
            	convertView = mInflater.inflate(R.layout.gridview, null);
            	ImageView imageView = (ImageView) convertView.findViewById( R.id.itemImage);
            	TextView textView = (TextView) convertView.findViewById( R.id.itemName);
            	Log.v("GridView", "加载GridView:getView 1=="+position );
            	
            	imageView.setImageResource((Integer)item.get(position ).get("itemImage"));
            	textView.setText( (String)item.get(position ).get("itemName"));
            	Log.v("GridView", "加载GridView:getView 2");
//	            if(convertView==null){
//	                imageView=new ImageView(mContext);  
//	                imageView.setLayoutParams(new GridView.LayoutParams(85, 85));  
//	                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);  
//	                imageView.setPadding(8, 8, 8, 8);  
//	            }else{  
//	                imageView = (ImageView) convertView;  
//	            }  
	            //imageView.setImageResource(mThumbIds[position]);  
	            return convertView;  
	        }       
	    }  
}

 

 2 gridView的布局

<?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" 
    android:paddingTop="20dp">
 
    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="90dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth" 
        android:horizontalSpacing="10dp">
    </GridView>
</LinearLayout>

 3  每个方格中加载的数据的控件布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/itemImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >
    </ImageView>

    <TextView
        android:id="@+id/itemName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/itemImage"
        android:layout_centerHorizontal="true" >
    </TextView>

</RelativeLayout>

 4 附件中是使用到的图片

分享到:
评论

相关推荐

    C#网格视图控件GridView的方法

    网格视图控件的功能使将很多张指定的图片以指定的大小显示出来

    ASP.NET 2.0/3.5中直接操作Gridview控件插入新记录

    一、简介 从ASP.NET 2.0起引入了一批新的功能强大的视图控件,例如Gridview、FormView和DetailsView等等。通过和数据源控件的简单结合,在许多情况下,仅需要简单的配置方式就可以开发出功能强大的应用程序。但遗憾...

    Android程序技术:网格视图.pptx

    GridView主要通过使用自定义BaseAdapter 来适配数据,进而显示到GridView中,步骤如下: 1. 准备数据源 list = new ArrayList, Object&gt;&gt;(); 2.为数据源设置适配器 MyAdapter adapter = new MyAdapter(); 3. 将适配...

    Android网格视图GridView的使用

    网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字、图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现。 GridView常用的XML属性:  本文将以一个具体的实例来说明如何...

    ASP.NET 控件的使用

    2.3.4 Button控件使用客户端脚本 62 2.3.5 执行跨页面发送 64 2.3.6 指定默认按钮 67 2.3.7 处理Command事件 68 2.4 显示图像 70 2.4.1 使用Image控件 70 2.4.2 使用ImageMap控件 71 2.5 使用Panel控件 75 2.6 使用...

    AspNetPager分页控件和gridview一起使用方法

    AspNetPager和gridview一起使用进行分页呈现,经本人测试完没运行,需要的可以拿去参考一下,相信大家对aspnetpager都不陌生,希望能帮到真正需要的人。(在这个例子中我使用的access数据库,链接字符串在配置文件中...

    android九宫格可分页加载控件使用详解

    内部的viewpager和gridview视图都以动态创建,无需新建一个xml文件,整个控件只需要一个item的布局文件。 使用方法 使用时可以先请求一个接口,需初始化数据,数据初始化需要根据总个数初始化所有数据,在每次分页...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    6.4.3 视图状态和控件状态组合使用规则 225 6.5 加密页面状态 225 6.6 清除页面状态 226 6.7 对动态添加控件的视图状态分析 228 6.8 自定义类型转换器实现高效率序列化 231 6.9 页面状态性能优化策略 238 ...

    ASP.NET.4揭秘

    2.3.4 button控件使用客户端脚本68 2.3.5 执行跨页面发送70 2.3.6 指定默认按钮73 2.3.7 处理command事件74 2.4 显示图像77 2.4.1 使用image控件77 2.4.2 使用imagemap控件78 2.5 使用panel控件82 2.6 使用hyperlink...

    获取放置在用户控件表单网页中的gridview的ID

    获取用户控件内部的网格视图控件的ID

    Xamarin.Forms.GridView:用于Xamarin表单的GridView

    支持UWP(将ItemsPanelTemplate设置为ItemsWrapGrid),Android(回收器)和IOS(UICollectionView) 该控件继承自xamarin列表视图,并且在UWP上使用内置的xamarin ListViewRenderer,但更改后将ItemsPanelTemplate...

    ActivityGroup + GridView + ViewFlipper实现选项卡

    GridView:GridView是一个网格布局的控件,可以显示多列数据,通常用于展示图片或者列表数据。 ViewFlipper:ViewFlipper是一个容器,可以在其中切换不同的视图,通常用于实现轮播图或者选项卡切换等功能。 结合...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    6.4.3 视图状态和控件状态组合使用规则 225 6.5 加密页面状态 225 6.6 清除页面状态 226 6.7 对动态添加控件的视图状态分析 228 6.8 自定义类型转换器实现高效率序列化 231 6.9 页面状态性能优化策略 238 ...

    GridView:ASP.NET Web 窗体 GridView 控件的示例项目

    网格视图ASP.NET Web 窗体 GridView 控件的示例项目。 有关文档,请参阅 MSDN 中的。 要下载而不克隆 Git 存储库,请单击主存储库页面右侧的下载 ZIP按钮。

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    6.4.3 视图状态和控件状态组合使用规则 225 6.5 加密页面状态 225 6.6 清除页面状态 226 6.7 对动态添加控件的视图状态分析 228 6.8 自定义类型转换器实现高效率序列化 231 6.9 页面状态性能优化策略 238 ...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    6.4.3 视图状态和控件状态组合使用规则225 6.5 加密页面状态225 6.6 清除页面状态226 6.7 对动态添加控件的视图状态分析228 6.8 自定义类型转换器实现高效率序列化231 6.9 页面状态性能优化策略238 6.9.1 存储...

    Android网格布局GridView学习使用

    GridView控件用于把一系列的控件组织成二维网格的形式显示出来,应用较多的也就是图片的组合显示了。关于GridView的使用直接看例子程序。 先看效果图: 具体实现方式如下: 主布局文件main.xml &lt;?xml version=...

    TreeGrid控件及Demo源码

    使用方法与TreeView和GridView相似。 原理: 这个控件主要类与MS TreeView相似,包括TreeGrid、TreeGridNode、TreeGridRow三个核心类。TreeGridNode表示一个节点,可以有DataItem属性,TreeGridRow表示节点所在的...

Global site tag (gtag.js) - Google Analytics