`

适配器 BaseAdapter 类

阅读更多

BaseAdapter 类
(一)概述
    AdapterView 通过Adapter (适配器类)向 AdapterView 的子类视图填充数据,其中,BaseAdapter 是所有适配器类的基类。该类是抽象类

(二)常用方法

 

 

1、public View getView(int position,View convertView,ViewGroup

parent)
    作用:创建并返回列表项,包括列表项的显示样式和数据,

Android 根据 getView 返回的对象绘制列表项。

说明:
    第一个参数-position:当前列表项在列表中的索引值
    第二个参数-convertView:当前列表项的 View 对象
    第三个参数-parent:列表项的父容器对象一列表对象
提示:该方法是抽象方法。
示例:以下代码创建一个标签对象,并返回该对象作为列表项
@Override
public View getView(int position,View convertView,ViewGroup

parent){
    //实例化标签对象
    TextView tvCityName = (TextView) findViewById

(R.layout.listview_item);
    //设置标签的标题为数组中索引值为position(即当前列表项的

索引值)的元素
    tvCityName.setText(mCityName[position]);
    return tvCityName;    //返回标签对象
}


2、public long getItemId(int position)
    作用:返回当前列表项的索引值
    参数-position:当前列表项的索引值
    提示:该方法为抽象方法
示例代码:
@Override
public long getItemId(int position){
    return postion;
}


3、public Object getItem(int position)
    作用:返回当前列表项对象
    参数-position:当前列表项的索引值
    提示:该方法是抽象方法
示例代码:
@Override
public String getItem(int position){
    return mCityName[position];
}
说明:
    1、mCityName 是一个字符串数组。以上代码返回该数组中的一个

元素。
    2、默认 getItem 返回的是 Object 类型,实际编程中应该修改

为具体要返回的类型。
例如:本例中返回的是 String 类型。若不修改,则调用该方法时需要做

类型转换。


4、public int getCount()
    作用:返回该列表的对象总数,Android 系统根据 getCount()返

回的值绘制指定数量的列表项。
    提示:该方法是抽象方法。

 

 

具体实例:

 

package com.jxust.day_05_01_listviewdemo;

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

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

	ListView mlvGeneral;
	List<GeneralBean> mGenerals; // 代表十个军事家的集合
	GeneralAdapter mAdapter;
	int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan, R.drawable.hanxin, R.drawable.lishimin, R.drawable.nuerhachi,
			R.drawable.sunbin, R.drawable.sunwu, R.drawable.yuefei, R.drawable.zhuyuanzhang };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initData(); // 初始化数据
		initView();
	}

	private void initView() {
		mlvGeneral = (ListView) findViewById(R.id.lvGeneral);
		mAdapter = new GeneralAdapter();	//创建适配器
		// 和ListView 关联起来
		mlvGeneral.setAdapter(mAdapter);
	}

	private void initData() {
		// 将资源中的字符串数组转换为Java数组
		String[] names = getResources().getStringArray(R.array.generals);
		mGenerals = new ArrayList<GeneralBean>();
		for (int i = 0; i < names.length; i++) {
			GeneralBean bean = new GeneralBean(resid[i], names[i]);
			mGenerals.add(bean);
		}

	}

	// 定义代表军事家的适配器类
	class GeneralAdapter extends BaseAdapter {

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

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

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

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 拿到 ListView 的布局并且转换为 View 类型的对象
			View layout = View.inflate(MainActivity.this, R.layout.item_generals, null); // root表示的是父容器
			// 找到显示军事家头像的 ImageView
			// layout的作用就是将目标转换为 layout.item_generals
			ImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb);
			// 找到显示军事家名字的 TextView
			TextView tvName = (TextView) layout.findViewById(R.id.tvName);
			// 获取军事家中下标是 position 的军事家对象
			GeneralBean bean = mGenerals.get(position);
			// 显示军事家头像
			ivThumb.setImageResource(bean.getResid());
			// 显示军事家的姓名
			tvName.setText(bean.getName());

			return layout;
		}

	}
}

 

 

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/lvGeneral"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="#ccc"
        android:dividerHeight="2dp"
        android:entries="@array/generals" />

</RelativeLayout>

 

 

 

<?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="wrap_content"
    android:orientation="horizontal" >
    
    <ImageView 
        android:id="@+id/ivThumb"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:src="@drawable/baiqi"
        />
	
    <TextView 
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:layout_marginLeft="10dp"
        android:text="白起"
        android:textSize="20sp"
        android:gravity="center_vertical"
        
        />
    
</LinearLayout>

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Day_05_01_ListViewDemo</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
	<string-array name="generals">
	    <item >白起</item>
	    <item >曹操</item>
	    <item >成吉思汗</item>
	    <item >韩信</item>
	    <item >李世民</item>
	    <item >努尔哈赤</item>
	    <item >孙膑</item>
	    <item >孙武</item>
	    <item >岳飞</item>
	    <item >朱元璋</item>
	</string-array>
    
</resources>

 

 

分享到:
评论

相关推荐

    android中自定义适配器BaseAdapter

    在Android开发中,自定义适配器BaseAdapter是一种常见的技术,用于将数据绑定到各种视图组件,如ListView、GridView或Spinner等。BaseAdapter是Android SDK提供的一种抽象类,它是Adapter接口的一个实现,允许开发者...

    RecyclerView的基础适配器BaseAdapter的封装

    RecyclerView的基础适配器BaseAdapter的封装主要包括以下几个方面: 1. **数据模型**: 首先,你需要定义一个数据模型类(如`MyItem`),它包含要显示的数据字段。例如,如果展示的是一个用户列表,`MyItem`可能...

    Android 适配器——BaseAdapter

    BaseAdapter是所有自定义适配器的基类,它提供了一个框架,让我们能够将自定义的数据集绑定到这些视图上。本文将深入探讨BaseAdapter的工作原理和如何利用它来实现自定义适配器。 **1. BaseAdapter简介** ...

    BaseAdapter适配器

    其中,`BaseAdapter`是自定义适配器的基础类,它为ListView等控件提供了一种灵活的方式来显示数据。 #### 二、BaseAdapter的关键方法 `BaseAdapter`主要包含了四个抽象方法,这些方法是必须被重写的: 1. **`...

    baseAdapter适配器.zip

    BaseAdapter是Android SDK提供的一种适配器类,它是Adapter接口的一个抽象实现,主要用于为自定义视图提供数据。BaseAdapter的主要功能是作为数据源和视图之间的桥梁,将数据转换成可显示的View。通过重写其中的方法...

    Android中 自定义数据绑定适配器BaseAdapter的方法

    `BaseAdapter` 是一个基础类,用于为各种视图控件(如ListView、Spinner等)提供数据适配。这篇文章将详细介绍如何在Android中自定义一个基于`BaseAdapter`的数据绑定适配器。 首先,我们需要创建一个新的类,这个...

    什么叫做万能适配器?BaseAdapter

    这个概念与BaseAdapter密切相关,BaseAdapter是Android SDK提供的一种基础适配器类,它是所有自定义适配器的基类。在这里,我们将深入探讨BaseAdapter以及如何通过它创建一个万能适配器。 首先,我们需要理解适配器...

    ListView大全(常用适配器)

    基础ArrayAdapter适配器 CursorAdapter 游标适配器 SimpleAdapter适配器 istAdatper适配器 baseAdapter适配器 自定义适配器继承BaseAdapter 的 范例使用 在ListView中使用

    baseAdapter

    `BaseAdapter` 是一个基础的适配器类,通常被用来连接数据源与`RecyclerView`,实现数据到视图的绑定。在描述中提到的"baseAdapter",就是一种自定义的适配器,专门用于`RecyclerView`,以简化开发流程。 `...

    Android之自定义实现BaseAdapter(通用适配器二)

    在上一篇通用适配器一中,我们已经把ViewHolder抽取为了一个通用的持有类,极大程度上减少了我们对代码的书写,现在开始在那样的基础上在此抽取,从而达到更优。先回顾上一篇中的MyAdapter.java类中的代码,然后通过...

    BaseAdapter 万能适配器

    BaseAdapter是Android开发中一种常用的适配器,它允许开发者将数据集与各种视图控件,特别是ListView、GridView等进行绑定。杨鸿洋大神的博客提供了关于BaseAdapter的详细示例,帮助开发者节省时间,更好地理解其...

    BaseAdapter事例源代码

    BaseAdapter是Android SDK提供的一种基础适配器类,它是所有自定义适配器的基类。它的主要职责是将数据集合与视图进行桥接,使得数据可以被可滚动视图显示。通过继承BaseAdapter并重写其必要的方法,我们可以根据...

    BaseAdapter最优化方法 与三种写法 可以直接作为工具类使用

    BaseAdapter是Android开发中常用的适配器,它用于将数据绑定到各种视图组件,如ListView、GridView等。然而,由于其默认实现存在性能问题,因此对其进行优化是提高应用性能的关键。本文将深入探讨BaseAdapter的优化...

    ListVeiw适配器工具类+焦点抢占+convertView复用导致内容错乱

    在Android中,常见的适配器有ArrayAdapter、SimpleAdapter和自定义的BaseAdapter。适配器工具类是为了简化适配器的创建和使用,通常包含一些便利的方法,如自动绑定数据、处理数据更新等。通过工具类,我们可以更...

    Android之自定义实现BaseAdapter(通用适配器一)

    通过前面的优化布局之后,我们接着来讲如何打造一个通用的适配器,那么通用适配器能干吗呢?很简单,减少我们对代码的书写,下面开始上代码了。 MyAdapter.java public class MyAdapter extends BaseAdapter { ...

    通用适配器(实体类+map)

    在本文中,我们将深入探讨通用适配器的实现,特别是在使用实体类(Entity Class)和Map数据结构时的情况。我们还将提及如何在Android Studio项目中实现这一功能。 首先,通用适配器(Generic Adapter)是为了处理...

    BaseAdapter源码

    这是最基础的使用方式,直接继承BaseAdapter类,重写其四个关键方法。在`getView()`方法中,通常需要根据数据项创建或复用convertView,然后填充视图元素。这种方式简单明了,但容易导致性能问题,如不恰当的...

    baseadapter

    BaseAdapter是Android SDK提供的一种抽象适配器类,它为自定义适配器提供了一个基础模板。开发者可以根据实际需求继承BaseAdapter,重写其中的方法,以实现将自定义数据与视图的适配。BaseAdapter的主要职责是将...

Global site tag (gtag.js) - Google Analytics