`

Android学习之图片画廊(SimpleAdapter)

阅读更多

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/MyLayout"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="bottom">
	<ImageSwitcher
		android:id="@+id/myImageSwitcher"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"/>
	<Gallery
		android:id="@+id/myGallery"
		android:gravity="center_vertical"
		android:spacing="3px"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"/>
</LinearLayout>

 

 

 

grid_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" 
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:background="#FFFFFF">
	<ImageView
		android:id="@+id/img"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:scaleType="center"/>
</LinearLayout>

 

 

 

MyGalleryDemo.java:

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

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.SimpleAdapter;
import android.widget.ViewSwitcher.ViewFactory;

public class MyGalleryDemo extends Activity {
	private Gallery gallery = null; 							// 图片浏览
	private List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>() ;
	private SimpleAdapter simpleAdapter = null; 				// 适配器
	private ImageSwitcher myImageSwitcher = null ;				// 图片切换
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);					// 调用布局文件
		this.initAdapter() ;									// 初始化适配器
		this.gallery = (Gallery) super.findViewById(R.id.myGallery) ;// 取得组件
		this.myImageSwitcher = (ImageSwitcher) super
				.findViewById(R.id.myImageSwitcher);			// 取得组件

		this.myImageSwitcher.setFactory(new ViewFactoryImpl()) ;// 设置图片工厂
		this.gallery.setAdapter(this.simpleAdapter);				// 设置图片集
		this.gallery.setOnItemClickListener(new OnItemClickListenerImpl()) ;// 设置单击事件
	}
	private class OnItemClickListenerImpl implements OnItemClickListener {
		@SuppressWarnings("unchecked")
		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position,
				long id) { 
			Map<String, Integer> map = (Map<String, Integer>) MyGalleryDemo
				.this.simpleAdapter.getItem(position); 					// 取出Map
			MyGalleryDemo.this.myImageSwitcher
				.setImageResource(map.get("img")); 						// 设置显示图片
		}
	}
	public void initAdapter(){									// 初始化适配器
		Field[] fields = R.drawable.class.getDeclaredFields(); 
		for (int x = 0; x < fields.length; x++) {	
			if (fields[x].getName().startsWith("ispic_")){ 		// 所有ispic_*命名的图片
				Map<String,Integer> map = new HashMap<String,Integer>() ;	// 定义Map
				try {
					map.put("img", fields[x].getInt(R.drawable.class)) ;
				} catch (Exception e) {							// 设置图片资源
				}
				this.list.add(map) ;							// 保存Map
			}
		}
		this.simpleAdapter = new SimpleAdapter(this, 			// 实例化SimpleAdapter
				this.list,										// 要包装的数据集合
				R.layout.grid_layout, 							// 要使用的显示模板
				new String[] { "img" }, 						// 定义要显示的Map的Key
				new int[] {R.id.img });							// 与模板中的组件匹配
	}
	private class ViewFactoryImpl implements ViewFactory {			// 定义视图工厂类
		@Override
		public View makeView() {
			ImageView img = new ImageView(MyGalleryDemo.this);		// 实例化图片显示
			img.setBackgroundColor(0xFFFFFFFF);						// 设置背景颜色
			img.setScaleType(ImageView.ScaleType.CENTER);			// 居中显示
			img.setLayoutParams(new ImageSwitcher.LayoutParams(		// 自适应图片大小
				LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));// 定义组件
			return img;
		}
	}

}

 

分享到:
评论

相关推荐

    android SimpleAdapter 中添加按钮响应事件

    在Android开发中,`SimpleAdapter` 是一个非常实用的适配器,用于将数据集绑定到视图,比如ListView或GridView。它简化了数据展示的过程,尤其在处理简单数据模型时。然而,`SimpleAdapter` 默认并不支持在列表项中...

    安卓Android源码——(列表SimpleAdapter适配).rar

    本资源"安卓Android源码——(列表SimpleAdapter适配).rar"应该包含了一个示例项目,展示了如何使用 `SimpleAdapter` 实现数据的动态加载和显示。 首先,我们来看一下 `SimpleAdapter` 的基本用法。`SimpleAdapter` ...

    Android之simpleAdapter的ListView

    本教程将聚焦于`SimpleAdapter`,它是Android提供的一种简单易用的适配器,特别适合新手入门学习。 `SimpleAdapter`是Android SDK内置的适配器之一,主要用于将数据集(通常是`List, ?&gt;&gt;`)转换为ListView的列表项...

    Android SimpleAdapter

    在Android开发中,`SimpleAdapter`是一个非常实用的适配器类,主要用于将数据绑定到ListView或GridView等列表视图中。它简化了数据展示的过程,使得开发者无需编写过多的自定义代码就能实现数据和视图的绑定。下面...

    安卓Android源码——(列表之SimpleAdapter适配).zip

    这个压缩包文件“安卓Android源码——(列表之SimpleAdapter适配).zip”显然是提供了一个关于如何使用`SimpleAdapter`进行数据展示的实例代码。下面我们将深入探讨`SimpleAdapter`的工作原理和使用方法。 1. **...

    Android Studio —— SimpleAdapter (模仿魅蓝设置界面)

    Android Studio —— SimpleAdapter (模仿魅蓝设置界面)。详情查看:https://blog.csdn.net/automoblie0/article/details/122631004

    SimpleAdapter基础小程序

    通过这个小程序,开发者可以学习到如何使用ListView和SimpleAdapter实现基本的列表展示,同时也能掌握图片加载和事件监听等关键技能。在实际开发中,根据需求可能会对SimpleAdapter进行扩展,比如自定义Adapter以...

    Android之simpleAdapter

    在Android开发中,`SimpleAdapter` 是一个非常实用的适配器类,它主要用于将数据绑定到像 `ListView` 这样的视图组件上。`ListView` 是Android中常用的一个控件,它允许用户显示一组长按需滚动的项目列表。`...

    Android ListView使用SimpleAdapter示例

    ListView使用simpleAdapter填充实现,数据结构是HashMap,对应的我的博客地址是: http://blog.csdn.net/u012320459/article/details/47667869

    Android ListView列表之SimpleAdapter适配Demo源码.rar

    本教程将深入讲解如何使用SimpleAdapter来适配ListView,并通过提供的"Android ListView列表之SimpleAdapter适配Demo源码"进行示例解析。 首先,了解SimpleAdapter的基本概念。SimpleAdapter是Adapter的一个子类,...

    安卓Android源码——(列表SimpleAdapter适配).zip

    本教程将深入探讨 `SimpleAdapter` 的使用,以及如何在 Android 应用中实现列表适配。 首先,`SimpleAdapter` 是 `BaseAdapter` 的一个子类,它简化了数据模型(如 ArrayList)到视图(如 ListView)的映射过程。`...

    Android应用源码之(列表之SimpleAdapter适配).zip

    在Android应用开发中,列表(ListView)是一种常用的数据展示组件,它允许用户浏览大量数据并进行交互。在处理简单数据绑定时,...同时,也可以学习如何在实际项目中灵活运用SimpleAdapter,以满足不同场景的需求。

    Android Studio开发显示网络图片

    在Android应用开发中,显示网络图片是一个常见的需求,特别是在构建社交、新闻或者电商类应用时。Android Studio作为官方推荐的Android开发集成环境,提供了丰富的工具和技术支持来实现这一功能。以下将详细介绍如何...

    SimpleAdapter的简单列子

    在Android开发中,`SimpleAdapter` 是一个非常实用的适配器类,它主要用于将数据集(通常是列表)与ListView控件进行绑定。这个适配器简化了将数据转化为ListView条目的过程,使得开发者可以快速地展示数据。下面将...

    android-listView-SimpleAdapter-进阶1.rar

    SimpleAdapter是Android提供的一种简单易用的适配器,它可以帮助开发者将数据集(如数组或列表)绑定到ListView上,使得数据能够以列表的形式展示给用户。本教程将深入探讨如何使用SimpleAdapter来实现ListView的...

    那些复杂的列表总要弄个清楚——(二)用SimpleAdapter做适配器

    SimpleAdapter是Android SDK中预定义的一个适配器,主要用于将数据绑定到ListView中的列表项视图,使得数据与界面元素之间能进行有效地交互。 首先,我们了解下SimpleAdapter的基本用法。SimpleAdapter接收四个参数...

    Android SimpleAdapter的多种显示GridView/ListView

    在Android开发中,SimpleAdapter是一种常用的适配器,它用于将数据绑定到视图上,如GridView或ListView。这些组件是Android中展示列表数据的主要方式,适用于创建各种类型的列表应用。下面将详细介绍如何使用...

    simpleAdapter的简单应用

    在Android开发中,`SimpleAdapter`是一个非常实用的适配器类,主要用于将数据源绑定到ListView、GridView等视图组件。在这个主题中,我们将深入探讨`SimpleAdapter`的使用方法,以及如何将图片和列表相结合,以实现...

    listview实例 simpleAdapter自定义列

    通过这个实例,开发者可以学习到如何在Android中使用SimpleAdapter来高效地绑定数据到ListView,并自定义列的显示。这在处理动态生成的列表或者需要展示多列数据的场景中非常有用。同时,理解并掌握ListView和...

Global site tag (gtag.js) - Google Analytics