`
梦想家dream
  • 浏览: 63957 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Android从零开始(十)

 
阅读更多
知识点:适配器(Adapter)
 
        Adapter有四种:
                     1、ArrayAdapter
                     2、SimpleAdapter
                     3、SimpleCursorAdapter
                     4、BaseAdapter


    ArrayAdapter,SimpleAdapter,SimpleCursorAdapter都是BaseAdapter的子类,分别是数组适配器,简单适配器,和简单游标适配器。数组适配器用于适配单一的数据项,简单适配器用于适配多数据项的情况,比如每一个项是由2个文本,或是1个图片+2个文本组成,简单游标适配器用于适配数据库表的查询结果到视图中

      在这里我们选择SimpleAdapter进行讲解:

      首先我们看一下目录结构:



      步骤一:编写一个布局文件(用于存放每一个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="horizontal" >
    
    
     <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/city_sky_img"
        />
	<TextView
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:gravity="center"
	    android:id="@+id/city_name"
	    android:layout_weight="1"
	    android:textSize="30sp"
	    />
	<TextView
	    android:layout_width="wrap_content"
	    android:layout_height="fill_parent"
	    android:id="@+id/city_temperature"
	    android:gravity="bottom"
	    android:textSize="20sp"
	    />
    

</LinearLayout>


        步骤二:主布局文件(代码如下)

          
<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="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="SimpleAdapter" />
    <ListView 
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:id="@+id/text_view"                   
        ></ListView>
    

</RelativeLayout>


   步骤三、Activity的核心代码:
           
package com.veryedu.simpleadapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
	/**
	 * @author 梦想家Dream
	 * 利用适配器显示一个图片+两个文本信息到一个ListView上
	 */

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		String[] citys={"长沙","北京","上海","广州","南京","合肥",
				"武汉","郑州","哈尔滨","长春","沈阳","天津",
				"杭州","福州","南宁","昆明","南昌","石家庄",
				"呼和浩特","乌鲁木齐","西安","西宁","兰州",
				"银川","拉萨","重庆","成都","贵阳","海口","深圳",};
		
		ListView  list_view=(ListView)this.findViewById(R.id.text_view);
		List data=new ArrayList();
		Class cls=R.raw.class;
		Random r=new Random();
		try {
			for (int i = 0; i < citys.length; i++) {
				
				String name="a"+r.nextInt(32);
				HashMap map=new HashMap();
				map.put("sky", cls.getField(name).getInt(null));   //反射的方式获得图片
				map.put("city", citys[i]);
				map.put("temperature", r.nextInt(40)-10+"-"+(r.nextInt(40)-10)+"℃");  //随机生成一个温度(现实中这个是从网络上拿的)
				data.add(map);
			}
			
		} catch (Exception e) {
			Log.e("TAG", e.toString());
			StackTraceElement[] stes=e.getStackTrace();
			for(int i=0;i<stes.length;i++){
				Log.e("TAG", stes[i].toString());
			}
		}
		
		String [] from={"sky","city","temperature"};
		int [] to={R.id.city_sky_img,R.id.city_name,R.id.city_temperature};
		
		SimpleAdapter simpleAdapter=new SimpleAdapter(this,               //你懂的,不解释
				                                      data,               //你要显示的数据源
				                                      R.layout.list_view, //显示的目的地的Id
				                                      from,               //数据源map的键(拿值放入到下面的相对应的位置中)
				                                      to);                //数据源中的值的目标位置
		list_view.setAdapter(simpleAdapter);   // 设置适配器(其实就是将适配器中的数据设置到当前ListView中)
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}


  通过以上操作就可以得到以下结果:
    



    总结:在数据展示中,我的理解是:不管是通过什么控件展示你的数据,你所要明白的是数据流,数据怎么样从数据库提炼然后展示到页面上的。这就类似于我在使用Jfreechart做报表的时候,它有核心工厂,主题样式,等等。我把这些类叫做工人,他们负责数据的美工,然后将数据完美的呈现给用户。其实我们在做程序开发的时候,把这些抽象的代码具体话,编写程序我们就会显得相对简单些,说白了,框架的实现,也就是我们现实具体的抽象。个人觉得将抽象的东西具体话会对我们代码的实现很有帮助,应该说是事半功倍吧,我是坚持这么做的···
      
  • 大小: 17.1 KB
  • 大小: 299.1 KB
0
0
分享到:
评论

相关推荐

    Android从零开始(十九)

    【Android从零开始(十九)】这一篇博客主要聚焦于Android开发的学习进程,从零基础开始逐步深入。作为Android开发者,理解源码和技术工具的运用是至关重要的,这有助于提升开发效率和解决问题的能力。在本篇文章中...

    《Android开发从零开始视频教程》下载地址

    《Android开发从零开始视频教程》下载地址,常期可用! 文件大小:2.3GB 文件格式:MP4 视频内容: [Android开发从零开始].1.Android开发环境搭建.mp4 30.6MB [Android开发从零开始].2.模拟器的使用.mp4 20.8MB ...

    从零开始Android编程

    从零开始Android编程:搭建开发环境与初探游戏开发 标题和描述中提及的“从零开始Android编程”旨在引导初学者踏入Android开发的世界,通过实际项目加深理解,特别是聚焦于游戏开发领域。该课程或文章不仅覆盖了...

    从零开始学Android

    从零开始学Android 基于经典的坦克大战游戏,学习中不失乐趣。通过整个游戏开发过程从零开始学习Android开发。本文将带领读者从零开始学习Android开发,通过复刻坦克大战游戏,了解2D游戏编程的简单思路。 知识点...

    从零开始android游戏编程 包括源码

    这篇详细的教程将带你从零开始学习Android游戏编程,并提供源码供你参考和实践。我们将会深入探讨以下几个关键知识点: 1. **Android基础知识**:首先,你需要熟悉Android开发环境,包括安装Android Studio、设置...

    android从零开始 若水 源代码

    "android从零开始 若水 源代码"是一套全面的学习资源,旨在帮助初学者和有经验的开发者深入理解Android系统的运作机制以及如何在实践中应用这些知识。43个课时的内容涵盖了Android开发的各个方面,确保了学习者能...

    从零开始学编程从零开始学Android

    《从零开始学编程从零开始学Android》是一本针对Android编程初学者的教程,由曾宏远和崔荔蒙两位作者编著,2012年出版。这本书旨在为那些对安卓手机编程开发充满兴趣的读者提供一个系统且全面的学习路径。在深入探讨...

    Android开发从零开始课件源代码

    在Android开发领域,从零开始的学习过程是许多新手开发者必经之路。这个"Android开发从零开始课件源代码"的资源,旨在提供一个全面、系统的学习路径,帮助初学者逐步掌握Android应用开发的各项技能。下面我们将深入...

    从零开始学Android.

    ### 从零开始学Android——全面解析入门指南 #### 一、引言 随着移动互联网技术的迅猛发展,Android作为全球最受欢迎的移动操作系统之一,吸引了众多开发者投身于其应用程序的开发之中。对于初学者而言,《从零...

    Android开发从零开始源码

    Android开发从零开始源码,很好的资源,对初学者很有用!

    从零开始Android游戏编程(第二版)PDF版

    本书《从零开始Android游戏编程(第二版)》是为那些想要踏入这个领域的初学者精心编写的。它将引导你逐步了解并掌握Android游戏开发的基本技术和流程,助你实现自己的游戏梦想。 首先,Android游戏编程的基础是...

    Android游戏编程从零开始

    这篇资料《Android游戏编程从零开始》将引导初学者逐步踏入这个领域。以下是一些关键的知识点,这些知识点将构成你学习Android游戏开发的基础: 1. **Android基础知识**:首先,你需要了解Android操作系统的基本...

    Android从零开始(十五)

    【标题】:“Android从零开始(十五)” 这篇博客标题表明了内容是关于Android开发的系列教程,这次的主题是第十五部分。通常这样的系列文章会逐步深入地介绍Android开发的基础到高级概念,帮助初学者从零开始学习...

    android从零开始

    《Android从零开始》这份文档全面且深入地介绍了Android开发的基础知识,对于初学者来说,是一份极佳的学习资源。Android作为全球最流行的移动操作系统,它的应用开发领域广阔,涉及了从用户界面设计到系统级别的...

    最新Android开发从零开始源码(更新到38)

    在Android开发领域,从零开始学习意味着要掌握一系列的基础概念和技术。这个名为“最新Android开发从零开始源码”的资源提供了宝贵的实践材料,适合初学者和有经验的开发者用来巩固基础或探索新的开发技巧。这份源码...

    从零开始学Android编程

    从零开始学Android编程

Global site tag (gtag.js) - Google Analytics