`

Android Adapter详解(2)

阅读更多
3:BaseAdapter
这种Adapter写起来最复杂,但是可以实现的功能却是最多的,比如说在某一个listview中加入button的监听事件等等,这也是必备的掌握技能

package com.example.arrayada;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

import com.example.adapter.MyBaseAdapter;

public class BaseActivity extends Activity{
	
	private ListView listview = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.base_main);
		listview = (ListView) findViewById(R.id.balist);
		listview.setAdapter(new MyBaseAdapter(this, getData()));
	}
	
	private List<HashMap<String, Object>> getData(){
		List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> map = new HashMap<String,Object>();
		map.put("img", R.drawable.pkq);
		map.put("te1", "皮卡丘");
		map.put("te2", "能力五星");
		map.put("te3", "查询详细");
		list.add(map);
		
		map = new HashMap<String,Object>();
		map.put("img", R.drawable.jng);
		map.put("te1", "皮卡丘");
		map.put("te2", "皮卡丘");
		map.put("te3", "皮卡丘");
		list.add(map);
		
		map = new HashMap<String,Object>();
		map.put("img", R.drawable.xhl);
		map.put("te1", "皮卡丘");
		map.put("te2", "皮卡丘");
		map.put("te3", "皮卡丘");
		list.add(map);
		
		map = new HashMap<String,Object>();
		map.put("img", R.drawable.zz);
		map.put("te1", "皮卡丘");
		map.put("te2", "皮卡丘");
		map.put("te3", "皮卡丘");
		list.add(map);
		
		return list;
	}
	
}


base_main.xml
<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="vertical"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/balist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_weight="1">
    </ListView>
    
    <Button
        android:id="@+id/but3" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="baseadapter 的listview" />

</LinearLayout>


base_list.xml
<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/img2"
        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/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="23dp"
            android:text="TextView" />


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

    </LinearLayout>
    
    <Button
        android:id="@+id/base_but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button" />
    
</LinearLayout>


package com.example.adapter;

import java.util.HashMap;
import java.util.List;

import com.example.arrayada.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MyBaseAdapter extends BaseAdapter{
	
	private Context c =null;
	
	private List<HashMap<String, Object>> list;
	
	private LayoutInflater myInflater = null;

	public MyBaseAdapter(Context context,List<HashMap<String, Object>> baselist) {
		c = context;
		list = baselist;
		System.out.println(list.size());
	}

	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int arg0) {
		return arg0;
	}

	@Override
	public long getItemId(int arg0) {
		return arg0;
	}

	@Override
	public View getView(int arg0, View arg1, ViewGroup arg2) {
		
		BaseHolder baseHolder = new BaseHolder();
		if(arg1 == null){
			myInflater = LayoutInflater.from(c);
			arg1 = myInflater.inflate(R.layout.base_list, null);
			baseHolder.img = (ImageView) arg1.findViewById(R.id.img2);
			baseHolder.textview1 = (TextView) arg1.findViewById(R.id.text1);
			baseHolder.textview2 = (TextView) arg1.findViewById(R.id.text2);
			baseHolder.button1 = (Button) arg1.findViewById(R.id.base_but);
			arg1.setTag(baseHolder);
		}else{
			baseHolder = (BaseHolder) arg1.getTag();
		}
		baseHolder.img.setImageResource((Integer) list.get(arg0).get("img"));
		baseHolder.textview1.setText((String) list.get(arg0).get("te1"));
		baseHolder.textview2.setText((String) list.get(arg0).get("te2"));
		baseHolder.button1.setText((String) list.get(arg0).get("te3"));
		return arg1;
	}
	
	private class BaseHolder{
		ImageView img;
		TextView textview1;
		TextView textview2;
		Button button1;
	}

}

分享到:
评论

相关推荐

    android adapter详解

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

    android开发Adapter详解

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

    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教程

    #### 三、Adapter 应用案例详解 1. **ArrayAdapter 示例** ```java public class ArrayAdapterActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super....

    Android之Adapter用法总结

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

    Android各种控件详解

    2. **列表(ListView)**:ListView用于显示可滚动的项目列表。在Activity中,你需要创建一个ListView实例,并将其添加到布局中。接着,你需要为ListView分配一个Adapter,如ArrayAdapter,来填充数据。此外,可以...

    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

    2. **Adapter原理** - **Adapter**:Adapter是ListView与数据源之间的桥梁,它负责将数据转化为ListView可显示的View。Adapter有多种类型,如ArrayAdapter、SimpleAdapter等,开发者可以根据需求选择或自定义...

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

    2. android:dropDownVerticalOffset:设置列表框的竖直距离 3. android:dropDownSelector:列表框被选中时的背景 4. android:dropDownWidth:设置下拉列表框的宽度 5. android:gravity:设置里面组件的对其方式 6. ...

    Android 蓝牙API详解

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

    Android RecyclerView网格布局(支持多种分割线)详解(2)

    上篇Android RecyclerView 详解(1)—线性布局 记录了下RecyclerView的使用方法,并且讲述了线性布局列表的使用方法,在此基础上加上了万能分割线,支持颜色分割线和图片分割线,同时支持对分割线设置线宽。 这篇...

    android ListView详解 源码实例

    在Android中,我们通常通过Adapter来连接ListView和数据源,Adapter负责将数据转化为可显示的视图。 1. 创建Adapter:自定义一个继承自BaseAdapter的类,实现其中的四个关键方法: - getCount():返回数据源的大小...

Global site tag (gtag.js) - Google Analytics