热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android-简单适配器SimpleAdapter的用法

前边有一篇博文是介绍ArrayAdapter(数组适配器)的用法,数组适配器用于绑定格式单一的数据,数据源可以是集合或者数组,而这一篇博文介绍的是SimpleAdapter(简单适配器)的用

前边有一篇博文是介绍ArrayAdapter(数组适配器)的用法,数组适配器用于绑定格式单一的数据,数据源可以是集合或者数组,而这一篇博文介绍的是SimpleAdapter(简单适配器)的用法,简单适配器用于绑定格式复杂的数据,数据源只能是特定泛型的集合。


目标效果:

 

使用简单适配器循环输出ListView列表,并且添加滑动事件,滑动一次增加一项。


1.显示activity_main.xml页面添加LisiView控件。

activity_main.xml页面:



    
    



2.新建item.xml页面,作为ListView每一行的一个布局。
item.xml页面:



    

    




3.MainActivity.java页面进行事件处理。
MainActivity.java页面:
package com.example.simpleadapter;

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

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity implements OnScrollListener{

	private ListView listview;
	private SimpleAdapter simp_adapter;
	private List>dataList;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	
		listview=(ListView) findViewById(R.id.listview);
		dataList=new ArrayList>();
		
		/**
		 * context:上下文,就是当前Activity
		 * data:数据源,一个Map所组成的List集合,每一个Map都会去对应ListView列表中的一行,每一个Map中的键必须包含所有在from中指定的键
		 * resource:列表项的布局文件id
		 * from:Map中的键名
		 * to:绑定数据视图中的id,与from成对应关系
		 */
		simp_adapter=new SimpleAdapter(this, getData(),R.layout.item, new String[]{"ivPic","tvText"}, new int[]{R.id.ivPic,R.id.tvtext});//新建适配器
		listview.setAdapter(simp_adapter);      //视图加载适配器
	
		listview.setOnScrollListener(this);     //滚动事件
	}
	
	private List> getData(){
		for(int i=0;i<20;i++){
			Mapmap=new HashMap();
			map.put("ivPic",R.drawable.ic_launcher);    //显示的图片信息
			map.put("tvText","爱心"+i);                  //显示的文字信息
			dataList.add(map);
		}
		return dataList;
	}
	
	@Override
	public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
	}
	
	@Override
	public void onScrollStateChanged(AbsListView view, int scrollState) {
		switch(scrollState){
		case SCROLL_STATE_TOUCH_SCROLL:			
			Log.i("MainActivity","手指滑动");
			break;
		case SCROLL_STATE_FLING:
			Log.i("MainActivity","惯性滚动");
			Mapmap=new HashMap();
			map.put("ivPic",R.drawable.ic_launcher);
			map.put("tvText","增加项");
			dataList.add(map);
			simp_adapter.notifyDataSetChanged();      //重新刷新ListView
			break;
		case SCROLL_STATE_IDLE:
			Log.i("MainActivity","滚动结束");
			break;
		}
	}
}


4.程序运行就可以出现目标效果,并且日志文件会有相应的输出。

如果手指松开让屏幕自行滑动,那么会打印三条信息,如果手指按住屏幕滑动后,使屏幕静止再抬起手指,那么将不会打印”惯性滑动“这条信息。


5.另外,本例的日志信息打印使用的log.i(),关于日志打印有多种选择。
(1)Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
(2)Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择;
(3)Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息;
(4)Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息;
(5)Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了.



推荐阅读
author-avatar
mobiledu2502876483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有