zoukankan      html  css  js  c++  java
  • GridView 使用详解

    极力推荐文章:欢迎收藏
    Android 干货分享

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

    1. GridView 主要用法
    2. GridView 使用案例

    GridViewListView 很类似,Listview 主要以列表形式显示数据,GridView 则是以网格形式显示数据,掌握ListView 使用方法后,会很轻松的掌握GridView的使用方法。

    GridView 简介

    继承关系如下

    java.lang.Object
       ↳	android.view.View
     	   ↳	android.view.ViewGroup
     	 	   ↳	android.widget.AdapterView<android.widget.ListAdapter>
     	 	 	   ↳	android.widget.AbsListView
     	 	 	 	   ↳	android.widget.GridView
    

    1. GridView 主要使用方法

    GridView 主要通过使用自定义BaseAdapter 来适配数据,进而显示到GridView中。主要使用方法如下:

    1. 准备数据源

            list = new ArrayList<Map<String, Object>>();
    

    2. 为数据源设置适配器

            MyAdapter adapter = new MyAdapter();
    

    3. 将适配过后点数据显示在GridView 上

            gridView.setAdapter(adapter);
    

    2. GridView 使用Demo

    • 实现效果如下

    GridView

    • 实现代码如下
    	private GridView gridView;
    	private List<Map<String, Object>> list;
    	private int images[] = { R.drawable.gril, R.drawable.ic_launcher,
    			R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril,
    			R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher,
    			R.drawable.gril };
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_grid_view_method);
    		gridView = (GridView) findViewById(R.id.gv);
    
    		// 1. 准备数据源
    		list = new ArrayList<Map<String, Object>>();
    		for (int i = 0; i < images.length; i++) {
    			Map<String, Object> map = new HashMap<String, Object>();
    			map.put("image", images[i]);
    			map.put("text", "图片" + i);
    			list.add(map);
    
    		}
    
    		// 2.为数据源设置适配器
    		MyAdapter adapter = new MyAdapter();
    		// 3.将适配过后点数据显示在GridView 上
    		gridView.setAdapter(adapter);
    		// item点击事件处理
    		gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view,
    					int position, long id) {
    				//
    
    				Toast.makeText(GridViewMethod.this,
    						list.get(position).get("text").toString(),
    						Toast.LENGTH_SHORT).show();
    			}
    		});
    	}
    
    	class MyAdapter extends BaseAdapter {
    
    		@Override
    		public int getCount() {
    			return list.size();
    		}
    
    		@Override
    		public Object getItem(int position) {
    			return list.get(position);
    		}
    
    		@Override
    		public long getItemId(int position) {
    			return position;
    		}
    
    		@Override
    		public View getView(int position, View convertView, ViewGroup parent) {
    			ViewHolder holder = null;
    			if (convertView == null) {
    				// 第一次加载创建View,其余复用 View
    				convertView = LayoutInflater.from(GridViewMethod.this).inflate(
    						R.layout.gridview_item_img_tv, null);
    				holder = new ViewHolder();
    				holder.imageView = (ImageView) convertView
    						.findViewById(R.id.grid_img);
    				holder.textView = (TextView) convertView
    						.findViewById(R.id.grid_tv);
    				// 打标签
    				convertView.setTag(holder);
    
    			} else {
    				// 从标签中获取数据
    				holder = (ViewHolder) convertView.getTag();
    			}
    
    			// 根据key值设置不同数据内容
    			holder.imageView.setImageResource((Integer) list.get(position).get(
    					"image"));
    			holder.textView.setText((String) list.get(position).get("text"));
    
    			return convertView;
    		}
    	}
    
    	class ViewHolder {
    		ImageView imageView;
    		TextView textView;
    
    	}
    
    
    
    • GridView 布局如下
    <?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"
        tools:context="com.android.program.programandroid.ListView.GridViewMethod">
    
    
        <GridView
            android:id="@+id/gv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center"
            android:horizontalSpacing="10dp"
            android:numColumns="3"
            android:verticalSpacing="10dp" />
    </LinearLayout>
    
    
    • item  布局 如下
    <?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">
    
        <ImageView
            android:id="@+id/grid_img"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:gravity="center_horizontal"
            android:src="@drawable/ic_launcher" />
    
        <TextView
            android:id="@+id/grid_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:textColor="@android:color/darker_gray"
            android:text="test"
            android:gravity="center_horizontal"
            android:textSize="25sp" />
    </LinearLayout>
    

    至此GridView 的基本使用方法结束。
    如果不是太明白,可以查看上篇文章
    ListView 使用详解

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    微信关注公众号:  程序员Android,领福利

  • 相关阅读:
    Ubuntu 12.10 安装 jdk-7u10-linux-x64.tar.gz(转载)
    Android-- FragmentStatePagerAdapter分页(转载)
    Windows下安装Cygwin及包管理器apt-cyg(转)
    Androidi性能优化之多线程和同步
    Androidi性能优化之高效使用内存
    综合面试---常问知识点
    路由器
    域名系统
    IP地址与子网掩码
    网络层使用的协议
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11310807.html
Copyright © 2011-2022 走看看