`

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 附件中是使用到的图片

分享到:
评论

相关推荐

    GridView控件的简单使用

    1. 打开设计视图,在工具箱中找到“GridView”控件并将其拖放到网页上。 2. 在属性窗口中配置GridView控件的属性,如ID、Width等。 三、数据绑定 GridView控件需要与数据源绑定才能显示数据。常见的数据源有...

    gridview控件使用实例源代码

    本实例源代码将深入探讨如何使用GridView控件,通过实际操作来理解其核心概念和用法。 首先,GridView控件的基本使用涉及到以下几个步骤: 1. **创建数据源**:在使用GridView之前,需要有一个数据源,这可以是SQL...

    GridView控件使用练习

    ### GridView控件使用知识点 #### 实验目的与背景 本实验旨在通过具体操作,帮助学习者深入了解和掌握ASP.NET中的GridView控件。GridView是ASP.NET中一个非常实用且功能强大的服务器控件,它用于在Web应用程序中以...

    一个含有列过滤的自定义翻页的GridView扩展控件

    3. **自定义分页逻辑**:在分页按钮点击事件中,计算出当前页的数据范围,更新GridView的数据源,并确保视图状态得到正确维护。 4. **界面交互设计**:在前端展示过滤和分页选项,确保用户界面友好且易于操作。 5....

    自定义GridView控件 代码

    6. **用户界面(UI)层的集成**:在`AlertSearch.aspx`页面中,我们将自定义的GridView控件拖放到设计视图中,并设置其属性,如数据源ID、分页设置等。通过这种方式,我们可以在UI层直接使用这个控件,而无需关心...

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

    ### C#网格视图控件GridView的方法 #### 网格视图控件GridView简介 在C#开发中,尤其是在Windows Forms应用开发中,GridView 控件是一种常用的展示数据的方式,它能够有效地展示表格形式的数据,并支持多种交互...

    ASP.NET初级_GridView控件和FormView控件

    在提供的压缩包"Koko_ASP.NET初级_GridView控件和FormView控件"中,你可能找到一个示例项目,展示了如何在实际开发中使用这两种控件。通过研究这个例子,你可以学习如何设置控件属性,编写事件处理程序,以及如何在...

    GridView控件

    在本教程中,我们将深入探讨GridView控件的核心功能和使用技巧,帮助你快速掌握这一强大的数据呈现工具。 一、GridView概述 GridView控件主要设计用于Web开发,特别是在ASP.NET环境中,它可以显示和编辑表格形式的...

    安卓GridView布局控件

    综上所述,Android的GridView布局控件是一个强大的工具,通过合理的配置和适配器的使用,可以创建出丰富多彩的网格视图。在实际开发中,我们需要根据具体需求进行优化,确保良好的用户体验和性能表现。

    精致的GridView控件源码

    GridView控件是Android开发中常用的一种布局管理器,主要用于展示数据集,比如图片、列表项等,以网格的形式排列。它的灵活性和可定制性使得它在各种应用中都非常受欢迎。这个压缩包文件“精致的GridView控件源码”...

    gridview控件详细使用

    1. **添加GridView控件**:在ASP.NET页面的Design视图中,通过工具箱选择GridView控件拖放到设计画布上,或在代码视图中添加`&lt;asp:GridView&gt;`标签。 2. **数据绑定**:GridView控件的数据源可以是各种类型,如...

    Android之GridView视图实现

    在本教程中,我们将深入探讨如何实现一个基本的GridView视图,并通过实际示例进行演示。 首先,我们需要在布局XML文件中添加GridView组件。在`res/layout`目录下创建一个新的布局文件,例如`grid_view.xml`,然后...

    功能强大自定义GridView控件全源码

    在Android开发中,GridView是一种常用的布局控件,它允许开发者以网格的形式展示数据。这个“功能强大自定义GridView控件全源码”很显然是一个专为Android开发者设计的开源项目,旨在提供一种更加灵活、可定制化的...

    GridView控件的使用

    - 添加GridView:在ASP.NET页面中,可以通过拖放工具箱中的GridView控件到设计视图,或者在代码中手动创建并添加到页面控件集合。 - 绑定数据源:GridView需要一个数据源来填充其行和列。这可以是任何支持数据绑定...

    数据控件gridview用法演示

    本实验主要针对面向对象编程课程,通过GridView控件的使用,帮助学生深入理解数据绑定、数据操作以及用户交互的基本概念。 一、GridView概述 GridView控件是ASP.NET Web Forms中的一员,它允许开发者以表格的形式...

    GridView分页控件(项目例子)

    GridView是ASP.NET Web Forms中非常常见且强大的数据展示控件,尤其在处理表格数据时,它的功能强大且易于使用。这个“GridView分页控件(项目例子)”应该是提供了使用纯.NET Framework 2.0实现的GridView分页功能...

    GridView控件使用省略号替换超长字符

    首先,在设计视图或代码视图中添加GridView控件,并为其指定数据源。可以通过`DataSourceID`属性绑定到一个数据源控件,或者在`RowDataBound`事件中动态绑定数据。 2. **设置列宽度**: 超长字符的显示问题通常与...

    ASP.NET中dropdownlist和GridView控件的用法

    - 直接在设计视图中添加GridView控件,或者通过代码创建。 - 设置`DataSourceID`以连接到数据源控件。 2. 数据绑定: - 使用`AutoGenerateColumns`属性,自动根据数据源字段创建列。 - 或者通过`Columns`集合...

    自定义Gridview 拖动控件排序移动textview

    总的来说,实现自定义`GridView`拖动控件排序移动`TextView`的功能,涉及到自定义适配器、拖放监听、视图动画以及数据源的同步更新等多个方面,需要对Android UI组件和事件处理有深入的理解。通过以上步骤,你可以在...

Global site tag (gtag.js) - Google Analytics