文档章节

我的Android开发学习笔记(二)AdapterView与Adapter

斯基劳绅士
 斯基劳绅士
发布于 2015/02/01 18:22
字数 603
阅读 46
收藏 1

AdapterView

常用的有ListView,Spinner,GridView和Gallery

AdapterView只是容器,需要Adapter提供每一个列表项的组件

常用的Adapter包括:ArrayAdatper,SimpleAdapter,SimpleCursorAdapter和BaseAdapter

填充过程:

实例化Adapter  →AdapterView.setAdatper(adapter);

(一)ArrayAdapter

ArrayAdapter的参数包含三项:Context,TextViewResourceId(ArrayAdapter只能是TextView),数组或者list

 

ArrayAdapter示例:

String [] str1=new String[]{"test1","test2","test3"};
ArrayAdapter<String>adapter1=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,str1);
list2=(ListView)findViewById(R.id.list_view2);
list1.setAdapter(adapter1);



(二)SimpleAdapter

SimpleAdapter包含的参数有:

        1)Context

        2)一个List<? Extends Map<String,?>>的集合对象

        3)ViewResourceId

        4)String[]类型,决定Map中哪些key对应的value来填充

        5)int[]类型。填充哪些组件(往往用id的形式指出)

 

SimpleAdapter的示例:

ListView list1;
	
	private int touxiang[]=new int[]{R.drawable.a11,R.drawable.a22,R.drawable.a33,R.drawable.a44};
	
	private String[] name=new String [] {"腾讯","Eclipse","魔兽世界","老滚5"};
	
	private String[] descri=new String[] {"觉得自己很弱?充Q币啊魂淡","万能IDE","兽人永不为奴!","其实我是萝莉卷轴5"};

	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO 自动生成的方法存根
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		list1=(ListView)findViewById(R.id.list_view1);
		List<Map<String,Object>>listItems=new ArrayList<Map<String, Object>>();
		for (int i = 0; i < name.length; i++) {
			Map<String, Object>listItem=new HashMap<String, Object>();
			listItem.put("touxiang",touxiang[i] );
			listItem.put("name", name[i]);
			listItem.put("desci", descri[i]);
			listItems.add(listItem);
		}
		SimpleAdapter adapter=new SimpleAdapter(this, listItems, R.layout.simple_item, new String[]{"touxiang","name","desci"},
				new int[]{R.id.touxiang,R.id.name,R.id.desci});
		list1.setAdapter(adapter);
		list1.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
				// TODO 自动生成的方法存根
				System.out.println(name[arg2]+"被单击了");
			}

		});
		list1.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO 自动生成的方法存根
				
				System.out.println(name[arg2]+"被选中了");
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO 自动生成的方法存根
				
			}
		});
		
	}



(三)BaseAdapter

通过拓展BaseAdapter来实现Adapter对象

拓展时需要重写的方法有:

1)getCount()  返回列表的项目数

2)getItemId(int position)

3getViewint positionView lineViewGroupView parent  返回一个View 是每个列表项的内容

4)getItem(int position)

 

BaseAdapter示例:

ListView mListView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_fifth);
		mListView=(ListView)findViewById(R.id.list_view3);
		BaseAdapter baseAdapter=new BaseAdapter() {
			
			@Override
			public View getView(int position, View lineView, ViewGroup parent) {
				// TODO 自动生成的方法存根
				LinearLayout linearLayout=new LinearLayout(FifthActivity.this);
				ImageView imageView=new ImageView(FifthActivity.this);
				TextView textView =new TextView (FifthActivity.this);
				linearLayout.setOrientation(0);
				imageView.setImageResource(R.drawable.a11);
				textView.setText("第"+position+"企鹅");
				linearLayout.addView(imageView);
				linearLayout.addView(textView);
				return linearLayout;
			}
			
			@Override
			public long getItemId(int arg0) {
				// TODO 自动生成的方法存根
				return arg0;
			}
			
			@Override
			public Object getItem(int arg0) {
				// TODO 自动生成的方法存根
				return null;
			}
			
			@Override
			public int getCount() {
				// TODO 自动生成的方法存根
				return 10;
			}
		};
		mListView.setAdapter(baseAdapter);
		
	}



© 著作权归作者所有

斯基劳绅士
粉丝 9
博文 11
码字总数 13905
作品 0
兰州
程序员
私信 提问
Android学习笔记(十二):Activity-Spinner

例子一:Spinner的基本实现方法 步骤一:编写Android XML文件 步骤二:源代码 1)设置Spinner之中的元素内容,采用了ArrayAdapter来描述,并通过setApdater()来设置adapter private String[...

鉴客
2011/12/01
1K
0
【android基础学习之四】——基础控件CheckBox,Spinner,AutoCompleteTextView,DatePicker,TimePicker

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误...

晨曦之光
2012/03/08
2.1K
0
ListView实现上拉加载更多

一、实现效果 这是整体实现效果。 二、实现步骤 (1)实现一个简单的自定义ListView;(2)给这个ListView添加一个底部进度提示;(3)实现ListView滚动监听。 三、整个项目实现 (1)项目结构 其中A...

二进制的忧伤
2015/01/21
401
0
Android中的下拉列表-自定义选项界面样式

Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值 调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListe......

一念三千
2012/08/27
7.2K
0
adapter 使用 overridePendingTransition 无效

Adapter 里我是这样写的: mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int i, lo......

紫心媛
2013/07/03
3.8K
4

没有更多内容

加载失败,请刷新页面

加载更多

vue中eventBus的使用

使用场景: 1、兄弟组件的通信,父子组件的通信 2、不同路由的通信 针对兄弟组件的通信,父子组件的通信 新建bus.js文件 import Vue from 'vue' var bus = new Vue() export default bus 在需...

tianyawhl
12分钟前
2
0
C# DBHelper

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;namesp......

vga
15分钟前
2
0
Spring Boot中@ConditionalOnProperty使用详解

在Spring Boot的自动配置中经常看到@ConditionalOnProperty注解的使用,本篇文章带大家来了解一下该注解的功能。 Spring Boot中的使用 在Spring Boot的源码中,比如涉及到Http编码的自动配置...

程序新视界
16分钟前
6
0
centos7下安装mysql(完整配置)

https://blog.csdn.net/baidu_32872293/article/details/80557668

为何不可1995
18分钟前
2
0
如何从零到一设计一个MQ消息队列

消息队列整体设计思路 主要是设计一个整体的消息被消费的数据流。 这里会涉及到:消息生产Producer、Broker(消息服务端)、消息消费者Consumer。 1.Producer(消息生产者):发送消息到Broker。...

一只会编程的狼
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部