`

Android Adapter详解(1)

阅读更多
Android之Adapter用法总结
1.概念
        Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(List View,Grid View)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:


Android中所有的Adapter一览:

由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 Base Adapter,Impleader,Adapter,Counteradaptation等。
BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。


1 ArrayAdapter:
最简单的显示一个ListView

((ListView)findViewById(R.id.listView1)).setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[]{"张三","李四","王五"}));  

同理也可以这样子来写:
private ListView listview ;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listview = (ListView) findViewById(R.id.listView1);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
		listview.setAdapter(adapter);
		adapter.add("黎三");
		adapter.clear();
		adapter.add("大帅哥");
		adapter.add("太帅了");
		adapter.remove("太帅了");
	}

后者的好处是可以动态的添加

2:SimpleAdapter
     这种的用法好处多多,可以应用到很多的场合,图片,文字都没有问题,如果实现以后要完成的功能不是特别复杂的话,都可以应用

package com.example.arrayada;

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.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class SimpleActivity extends Activity implements OnItemClickListener,OnClickListener{

	private ListView listview ;
	SimpleAdapter adapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.simple_main);
		listview = (ListView) findViewById(R.id.listView2);
		adapter = new SimpleAdapter(this, getdate(), R.layout.simple_list, 
				new String[]{"img","name","age","sex","nengli"}, new int[]{R.id.img1,R.id.te1,R.id.te2,R.id.te3,R.id.te4});
		listview.setAdapter(adapter);
		listview.setOnItemClickListener(this);
//		findViewById(R.id.but1).setOnClickListener(this);
	}

	private List<Map<String, Object>> getdate() {
		List simplelist = new ArrayList<Map<String, Object>>();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("img", R.drawable.pkq);
		map.put("name", "皮卡丘");
		map.put("age", "2");
		map.put("sex", "男");
		map.put("nengli", "五星");
		simplelist.add(map);
		
		map = new HashMap<String, Object>();
		map.put("img", R.drawable.jng);
		map.put("name", "杰尼龟");
		map.put("age", "21");
		map.put("sex", "男");
		map.put("nengli", "五星");
		simplelist.add(map);
		
		map = new HashMap<String, Object>();
		map.put("img", R.drawable.xhl);
		map.put("name", "小火龙");
		map.put("age", "3");
		map.put("sex", "男");
		map.put("nengli", "五星");
		simplelist.add(map);
		
		map = new HashMap<String, Object>();
		map.put("img", R.drawable.zz);
		map.put("name", "妙蛙种子");
		map.put("age", "2");
		map.put("sex", "男");
		map.put("nengli", "五星");
		simplelist.add(map);
		return simplelist;
	}

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		Map<String, Object> map = (Map<String, Object>) adapter.getItem(arg2);
		Toast.makeText(this, map.get("name")+"", Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onClick(View arg0) {
		switch (arg0.getId()) {
		case R.id.but1:
			break;

		default:
			break;
		}
	}

}

<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"
    android:orientation="horizontal"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/te1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/te2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </LinearLayout>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/te3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/te4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </LinearLayout>
    
</LinearLayout>

剩下的两种Adapter可以放到下一次讲解中去
  • 大小: 26.6 KB
  • 大小: 55 KB
分享到:
评论

相关推荐

    android adapter详解

    Android Adapter 详解 Android Adapter 是 Android 开发中一个重要的组件,负责将数据绑定到用户界面中。今天,我们将深入探讨 Android Adapter 的原理和实现方式。 什么是 Android Adapter? Android Adapter 是...

    android开发Adapter详解

    ### Android开发Adapter详解 #### 一、Adapter概念与作用 在Android开发中,Adapter是一种用于连接数据源和视图组件的重要桥梁。它主要用于处理数据集合与列表视图之间的交互,确保视图能够正确且高效地展示数据。...

    Android Adapter详解(2)

    这篇博客“Android Adapter详解(2)”可能会深入探讨Adapter的工作原理、如何使用以及一些常见问题的解决方法。由于没有直接提供博客的具体内容,我将根据常规的Adapter知识进行详细解释。 Adapter是Android中用于将...

    Android adapter详解

    适配器(Adapter)在Android开发中是一个非常重要的概念,它主要用于处理数据源和UI组件之间的数据流动和转换。适配器作为数据和UI之间的桥梁,能够把后端数据适配到前端的显示界面,使之能够按照一定的格式显示出来...

    Android Adapter里面嵌套ListView实例详解

    Android Adapter里面嵌套ListView实例详解 Android Adapter里面嵌套ListView实例详解是Android开发中的一种常见设计,即在一个ListView中嵌套另一个ListView。这种设计可以实现复杂的列表显示,但是需要特殊处理以...

    Android listview与adapter详解及实例代码

    本篇文章将深入讲解Android的ListView与Adapter的工作原理,并通过实例代码演示如何使用。 首先,ListView的主要职责包括两个方面:一是将数据填充到对应的视图(View)中,二是处理用户的交互事件,如点击事件。...

    android Adapter教程

    ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, strs); setListAdapter(adapter); } } ``` 上述代码展示了如何使用 ArrayAdapter 将一个字符串...

    Android之Adapter用法总结

    ### Android之Adapter用法总结 #### 一、概念与作用 **Adapter** 是 Android 开发中连接后端数据和前端视图的一个关键组件。它作为数据和用户界面(UI)之间的桥梁,在Android开发中扮演着极其重要的角色。尤其是...

    Android各种控件详解

    1. **文本框(TextView)**:TextView用于展示静态文本,可以在Activity中直接创建或者在布局文件中定义。在布局文件中,可以设置text属性来指定要显示的文本,以及使用其他属性如textSize、textColor等来调整样式。...

    Android ViewPager使用详解

    **Android ViewPager 使用详解** ViewPager是Android开发中一个非常重要的组件,它允许用户通过左右滑动来切换不同的页面,常用于实现应用的滑动导航或展示多个相似内容的页面。在本篇文章中,我们将深入探讨...

    android优化技术详解

    Android 优化技术详解 Android 优化技术是指通过合理的编程和设计来提高 Android 应用程序的性能、内存和用户体验的一系列技术。下面是 Android 优化技术的详细解释: UI 布局优化 Android 的 UI 界面布局的优化...

    android核心技术与实例详解光盘源代码3

    同时,讲解了LinearLayout、RelativeLayout和ConstraintLayout等布局管理器的用法,以及如何使用Adapter将数据绑定到ListView和GridView等视图组件。此外,还涉及了触摸事件处理和动画效果的实现。 第14章:Android...

    4、Android View详解第三部分.pptx

    【Android View详解第三部分】 在Android开发中,View是一个核心概念,它代表用户界面上的可视化元素。在本部分的讲解中,我们将深入探讨几个重要的View组件:TabHost、ScrollView、ListView、ListActivity、...

    安卓listview相关相关-ListView通过adapter传递对象.rar

    - 在Android中,通常我们会创建一个继承自BaseAdapter的自定义Adapter,然后在Adapter的`getView()`方法中根据数据创建或复用View。 - 数据通常存储在一个列表(如ArrayList)中,每个元素代表ListView的一行。...

    android studio 的下拉菜单Spinner使用详解

    1. android:dropDownHorizontalOffset:设置列表框的水平偏移距离 2. android:dropDownVerticalOffset:设置列表框的竖直距离 3. android:dropDownSelector:列表框被选中时的背景 4. android:dropDownWidth:设置...

    Android 蓝牙API详解

    **Android蓝牙API详解** 在Android平台上,蓝牙技术是设备间通信的重要途径,广泛应用于数据传输、设备配对、物联网(IoT)等场景。Android提供了丰富的蓝牙API,使得开发者能够轻松实现蓝牙功能,包括经典蓝牙...

    android ListView详解 源码实例

    1. 创建Adapter:自定义一个继承自BaseAdapter的类,实现其中的四个关键方法: - getCount():返回数据源的大小,即ListView中列表项的数量。 - getItem(int position):返回指定位置的数据对象。 - getItemId...

    《Android应用开发详解》配套光盘之源代码

    1. **UI设计**:Android应用的用户界面是与用户交互的窗口,源代码中包含了各种布局管理器(如LinearLayout、RelativeLayout、GridLayout、ConstraintLayout)的使用示例,以及自定义View和Adapter的实现,这些都是...

Global site tag (gtag.js) - Google Analytics