- 浏览: 931686 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
itzhongyuan:
java Random类详解 -
david_je:
你好,我看到你在C里面回调JAVA里面的方法是在native里 ...
Android NDK开发(1)----- Java与C互相调用实例详解 -
fykyx521:
请求锁是在 oncreate 释放实在ondestroy?? ...
Android如何保持程序一直运行 -
aduo_vip:
不错,总结得好!
Android读取assets目录下的资源 -
f839903061:
给的网址很给力哦!
Android 4.0.1 源码下载,编译和运行
我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。所以说BaseAdapter对他们三者来说是通用的。
下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是implements了ListAdapter和SpinnerAdapter的接口,所以要实现里面的方法,代码如下(未作任何改动的):
view plaincopy to clipboardprint?
01.private class MyAdapter extends BaseAdapter{
02. @Override
03. public int getCount() {
04. // TODO Auto-generated method stub
05. return 0;
06. }
07. @Override
08. public Object getItem(int arg0) {
09. // TODO Auto-generated method stub
10. return null;
11. }
12. @Override
13. public long getItemId(int position) {
14. // TODO Auto-generated method stub
15. return 0;
16. }
17. @Override
18. public View getView(int position, View convertView, ViewGroup parent) {
19. // TODO Auto-generated method stub
20. return null;
21. }
22.
23. }
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return null;
}
}
为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.
第一步:新建一个Android工程命名为BaseAdapterDemo.
第二步:修改main.xml代码如下:
view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:orientation="vertical"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent"
06. >
07. <TextView
08. android:layout_width="fill_parent"
09. android:layout_height="wrap_content"
10. android:text="Welcome to Mr Wei's Blog"
11. />
12. <Spinner
13. android:id="@+id/spinner"
14. android:layout_width="fill_parent"
15. android:layout_height="wrap_content"
16. />
17. <ListView
18. android:id="@+id/listview"
19. android:layout_width="fill_parent"
20. android:layout_height="wrap_content"
21. />
22. <GridView
23. android:id="@+id/gridview"
24. android:layout_width="fill_parent"
25. android:layout_height="wrap_content"
26. />
27.</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Welcome to Mr Wei's Blog"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第三步:修该BaseAdapterDemo.java代码如下:
view plaincopy to clipboardprint?
01.package com.tutor.baseadapter;
02.import android.app.Activity;
03.import android.graphics.Color;
04.import android.os.Bundle;
05.import android.view.View;
06.import android.view.ViewGroup;
07.import android.widget.BaseAdapter;
08.import android.widget.GridView;
09.import android.widget.ListView;
10.import android.widget.Spinner;
11.import android.widget.TextView;
12.public class BaseAdapterDemo extends Activity {
13.
14. private Spinner mSpinner;
15. private ListView mListView;
16. private GridView mGridView;
17. private MyAdapter mMyAdapter;
18. @Override
19. public void onCreate(Bundle savedInstanceState) {
20. super.onCreate(savedInstanceState);
21. setContentView(R.layout.main);
22. setupViews();
23. }
24.
25. public void setupViews(){
26. mMyAdapter = new MyAdapter();
27. mSpinner = (Spinner)findViewById(R.id.spinner);
28. mSpinner.setAdapter(mMyAdapter);
29. mListView = (ListView)findViewById(R.id.listview);
30. mListView.setAdapter(mMyAdapter);
31. mGridView = (GridView)findViewById(R.id.gridview);
32. mGridView.setAdapter(mMyAdapter);
33. mGridView.setNumColumns(2);
34.
35. }
36.
37. //定义自己的适配器,注意getCount和getView方法
38. private class MyAdapter extends BaseAdapter{
39. @Override
40. public int getCount() {
41. // 这里我就返回10了,也就是一共有10项数据项
42. return 10;
43. }
44. @Override
45. public Object getItem(int arg0) {
46. return arg0;
47. }
48. @Override
49. public long getItemId(int position) {
50. return position;
51. }
52. @Override
53. public View getView(int position, View convertView, ViewGroup parent) {
54. // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
55. //通常return 的view也就是convertView
56. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
57. TextView mTextView = new TextView(getApplicationContext());
58. mTextView.setText("BaseAdapterDemo");
59. mTextView.setTextColor(Color.RED);
60. return mTextView;
61. }
62.
63. }
64.}
等等,平时我在这里就和大家告别了,今天还没完呵呵,因为下面是我们的重点了,我们平常看的应用列表什么的,不是单单的一个TextView就可以了事的,所以我们可以在Layout里事先 定义好布局。这里我新建了一个名叫baseadapter_provider.xml文件,代码如下:
view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:orientation="horizontal"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent"
06. >
07. <ImageView
08. android:id="@+id/imageView"
09. android:layout_width="wrap_content"
10. android:layout_height="wrap_content"
11. android:src="@drawable/icon"
12. />
13. <TextView
14. android:id="@+id/textview"
15. android:layout_width="wrap_content"
16. android:layout_height="wrap_content"
17. android:text="BaseAdapter"
18. />
19.</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
/>
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BaseAdapter"
/>
</LinearLayout>
将getView()方法修改如下:
view plaincopy to clipboardprint?
01. @Override
02. public View getView(int position, View convertView, ViewGroup parent) {
03. // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
04. //通常return 的view也就是convertView
05. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
06.// TextView mTextView = new TextView(getApplicationContext());
07.// mTextView.setText("BaseAdapterDemo");
08.// mTextView.setTextColor(Color.RED);
09.// return mTextView;
10.
11. //LayoutInflater不会的参照我的 Android 高手进阶教程(五)
12. convertView = LayoutInflater.from(getApplicationContext()).inflate
13. (R.layout.baseadapter_provider,null);
14.
15. TextView mTextView = (TextView)convertView.findViewById(R.id.textview);
16. mTextView.setText("BaseAdapterDemo" + position);
17. mTextView.setTextColor(Color.RED);
18. return convertView;
19. }
下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是implements了ListAdapter和SpinnerAdapter的接口,所以要实现里面的方法,代码如下(未作任何改动的):
view plaincopy to clipboardprint?
01.private class MyAdapter extends BaseAdapter{
02. @Override
03. public int getCount() {
04. // TODO Auto-generated method stub
05. return 0;
06. }
07. @Override
08. public Object getItem(int arg0) {
09. // TODO Auto-generated method stub
10. return null;
11. }
12. @Override
13. public long getItemId(int position) {
14. // TODO Auto-generated method stub
15. return 0;
16. }
17. @Override
18. public View getView(int position, View convertView, ViewGroup parent) {
19. // TODO Auto-generated method stub
20. return null;
21. }
22.
23. }
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return null;
}
}
为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.
第一步:新建一个Android工程命名为BaseAdapterDemo.
第二步:修改main.xml代码如下:
view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:orientation="vertical"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent"
06. >
07. <TextView
08. android:layout_width="fill_parent"
09. android:layout_height="wrap_content"
10. android:text="Welcome to Mr Wei's Blog"
11. />
12. <Spinner
13. android:id="@+id/spinner"
14. android:layout_width="fill_parent"
15. android:layout_height="wrap_content"
16. />
17. <ListView
18. android:id="@+id/listview"
19. android:layout_width="fill_parent"
20. android:layout_height="wrap_content"
21. />
22. <GridView
23. android:id="@+id/gridview"
24. android:layout_width="fill_parent"
25. android:layout_height="wrap_content"
26. />
27.</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Welcome to Mr Wei's Blog"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
第三步:修该BaseAdapterDemo.java代码如下:
view plaincopy to clipboardprint?
01.package com.tutor.baseadapter;
02.import android.app.Activity;
03.import android.graphics.Color;
04.import android.os.Bundle;
05.import android.view.View;
06.import android.view.ViewGroup;
07.import android.widget.BaseAdapter;
08.import android.widget.GridView;
09.import android.widget.ListView;
10.import android.widget.Spinner;
11.import android.widget.TextView;
12.public class BaseAdapterDemo extends Activity {
13.
14. private Spinner mSpinner;
15. private ListView mListView;
16. private GridView mGridView;
17. private MyAdapter mMyAdapter;
18. @Override
19. public void onCreate(Bundle savedInstanceState) {
20. super.onCreate(savedInstanceState);
21. setContentView(R.layout.main);
22. setupViews();
23. }
24.
25. public void setupViews(){
26. mMyAdapter = new MyAdapter();
27. mSpinner = (Spinner)findViewById(R.id.spinner);
28. mSpinner.setAdapter(mMyAdapter);
29. mListView = (ListView)findViewById(R.id.listview);
30. mListView.setAdapter(mMyAdapter);
31. mGridView = (GridView)findViewById(R.id.gridview);
32. mGridView.setAdapter(mMyAdapter);
33. mGridView.setNumColumns(2);
34.
35. }
36.
37. //定义自己的适配器,注意getCount和getView方法
38. private class MyAdapter extends BaseAdapter{
39. @Override
40. public int getCount() {
41. // 这里我就返回10了,也就是一共有10项数据项
42. return 10;
43. }
44. @Override
45. public Object getItem(int arg0) {
46. return arg0;
47. }
48. @Override
49. public long getItemId(int position) {
50. return position;
51. }
52. @Override
53. public View getView(int position, View convertView, ViewGroup parent) {
54. // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
55. //通常return 的view也就是convertView
56. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
57. TextView mTextView = new TextView(getApplicationContext());
58. mTextView.setText("BaseAdapterDemo");
59. mTextView.setTextColor(Color.RED);
60. return mTextView;
61. }
62.
63. }
64.}
等等,平时我在这里就和大家告别了,今天还没完呵呵,因为下面是我们的重点了,我们平常看的应用列表什么的,不是单单的一个TextView就可以了事的,所以我们可以在Layout里事先 定义好布局。这里我新建了一个名叫baseadapter_provider.xml文件,代码如下:
view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:orientation="horizontal"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent"
06. >
07. <ImageView
08. android:id="@+id/imageView"
09. android:layout_width="wrap_content"
10. android:layout_height="wrap_content"
11. android:src="@drawable/icon"
12. />
13. <TextView
14. android:id="@+id/textview"
15. android:layout_width="wrap_content"
16. android:layout_height="wrap_content"
17. android:text="BaseAdapter"
18. />
19.</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
/>
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BaseAdapter"
/>
</LinearLayout>
将getView()方法修改如下:
view plaincopy to clipboardprint?
01. @Override
02. public View getView(int position, View convertView, ViewGroup parent) {
03. // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
04. //通常return 的view也就是convertView
05. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
06.// TextView mTextView = new TextView(getApplicationContext());
07.// mTextView.setText("BaseAdapterDemo");
08.// mTextView.setTextColor(Color.RED);
09.// return mTextView;
10.
11. //LayoutInflater不会的参照我的 Android 高手进阶教程(五)
12. convertView = LayoutInflater.from(getApplicationContext()).inflate
13. (R.layout.baseadapter_provider,null);
14.
15. TextView mTextView = (TextView)convertView.findViewById(R.id.textview);
16. mTextView.setText("BaseAdapterDemo" + position);
17. mTextView.setTextColor(Color.RED);
18. return convertView;
19. }
发表评论
-
Android使用binder访问service的方式
2013-08-23 09:42 16441. 我们先来看一个与本地service通信的例子。 pub ... -
android-Service和Thread的区别
2013-08-23 09:17 920servie是系统的组件,它由系统进程托管(servicema ... -
git介绍
2013-08-01 14:49 1046git介绍 使用Git的第一件事就是设置你的名字和email ... -
cocos2d-x学习之自动内存管理和常见宏
2013-07-29 15:41 9111.自动内存管理 1)概述 C++语言默认是 ... -
cocos2dx中利用xcode 调用java中的函数
2013-07-29 11:36 25271. 先把cocos2dx根目录中的 /Users/zhaos ... -
cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解
2013-07-29 10:35 1113第一个改动: CCLayer初始化 自定义Layer,类名 ... -
xcode与eclipse整合cocos2dx
2013-07-29 10:32 1223文档xcode版本是 204 1. 在xcode中创建coc ... -
git提交代码
2013-07-23 16:00 10601. 在本地创建一个Git的工作空间,在里面创建一个工程(如H ... -
Android.mk的用法和基础
2013-07-19 14:11 4356一个Android.mk file用来向编译系统描述你的源代码 ... -
eclipse配置NDK-Builder命令
2013-07-18 11:02 10391. 2. -
eclipse配置javah命令
2013-07-18 10:48 20171.找到javah命令所在的目录 我的为 /usr/bi ... -
Android SDL2.0 编译
2013-07-17 13:40 19741,下载: wget http://www.libsdl.o ... -
IntelliJ Idea 常用快捷键列表
2013-05-27 10:19 0Alt+回车 导入包,自动修 ... -
android应用后台安装
2013-05-21 12:02 1030android应用后台安装,静默安装的代码实现方法 http ... -
编译linux内核映像
2013-05-21 11:33 968a)准备交叉编译工具链 android代码树中有一个pr ... -
如何单独编译Android源代码中的模块
2013-05-21 11:29 999一. 首先在Android源代码 ... -
Ubuntu安装JDK6和JDK5
2013-05-19 19:04 1015sudo apt-get install sun-java6- ... -
java_jni详解_01
2013-05-08 17:15 961java中的jni 例子HelloWorld 准备过程: 1 ... -
下载android源码 中断解决原因
2013-05-07 15:51 1323解决方法 1. 浏览器登录https://android.go ... -
mac下编译ffmpeg1.1.4
2013-05-07 14:55 1368经过一番网上搜索 与 无数次的编译 终于成功了 下面献上编译 ...
相关推荐
在Android开发中,BaseAdapter是一个非常重要的类,它充当了数据模型与视图组件(如Spinner、ListView、GridView等)之间的桥梁。这篇博客将深入探讨如何利用BaseAdapter在各种控件中实现数据绑定和交互。 首先,...
BaseAdapter是Android SDK提供的一个抽象类,它是Adapter的一种基础实现,用于将数据源(如ArrayList)中的数据转换成可显示的View。通过自定义BaseAdapter,我们可以将任何复杂的数据结构展示在ListView或GridView...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据的列表形式。"Android ListView 万能适配器"是解决ListView数据绑定的一种高效、灵活的方法,它能够适应多种类型的数据,使得开发者无需为每种不同...
在Android开发中,"万能适配器"(Universal Adapter)通常是指一种可复用、灵活的适配器设计模式,用于将各种不同类型的数据显示在ListView、GridView等可滚动视图组件中。这个概念与BaseAdapter密切相关,...
总结起来,Android万能适配器是Android开发中的重要概念,它简化了数据与UI的绑定,支持多种布局,通过自定义适配器和优化技术,实现了高效的数据展示。理解和熟练运用适配器,对于提升Android应用的用户体验至关...
在Android开发中,`BaseAdapter`是一个至关重要的组件,它为ListView、GridView等视图控件提供了数据适配的功能。本篇文章将深入讲解`BaseAdapter`的基础知识,以及如何使用`BaseAdapter`来创建一个万能适配器,非常...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。`ListView`的适配器(Adapter)是连接数据源和视图的关键,它负责将数据转化为可显示的视图项。"android之listview万能适配器"概念旨在创建一...
在Android中,最常见的适配器是BaseAdapter,它是所有自定义适配器的基础。BaseAdapter提供了一些基本方法,如`getCount()`用于返回数据源的大小,`getItem()`获取指定位置的项,以及`getView()`用于创建或复用并...
Android高手进阶教程之----Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!.doc Android高手进阶教程之----通过Location获取Address的使用.doc Android基础教程之----Android ProgressBar的使用.doc...
在Android开发中,ListView和GridView是两种常用的列表控件,用于展示大量的数据。它们的核心功能是通过适配器(Adapter)来实现数据与视图之间的绑定。本篇将深入探讨如何打造一个万能的适配器,使得ListView和...
在Android开发中,为了提供类似iOS的用户体验,开发者经常需要实现一种称为侧滑菜单(Slide-out Menu)的功能。本文将详细讲解如何利用BaseAdapter来创建一个仿iOS风格的侧滑菜单,包括菜单项的动态设置、菜单显示...
在android的编程过程中,经常出现各种LiView的布局或者GridView之类的布局吗,这些布局都需要一个适配器,Adapetr的编程中,比如ViewHolder和convertView的编写会带来大量重复的代码,这个项目打造了一个万能适配器...
一个很好的适配器,简化繁琐的的创建BaseAdapter,只需要几行代码就可以实现传统的ListView功能
在Android开发中,适配器(Adapter)是一个关键组件,它起到了桥梁的作用,连接数据源与UI展示。"Android 万能适配器"的概念旨在创建一个通用的、可复用的适配器模板,以简化开发过程并提高代码的可维护性。下面将...
鸿洋的RecyclerView万能适配器是一种高效的适配器模式,它通过继承自BaseAdapter,实现了对多种item类型的统一管理。在传统的Adapter中,当需要显示多种不同布局时,需要创建多个ViewHolder类,代码复杂度较高。而...
在实际项目中,我们可以根据`Android万能GridView和ListView`的源码,学习如何有效地利用`base-adapter-helper`进行数据绑定、视图扩展和性能优化。此外,还可以进一步研究如何结合RecyclerView,利用其更丰富的功能...
"android万能适配器"是一个旨在简化适配器实现的工具,通过它可以方便地处理各种不同的布局和控件,避免开发者每次都手动编写新的适配器类,提高开发效率。 1. **适配器原理**: - 适配器模式是一种设计模式,用于...
在Android应用开发中,ListView是常用的视图组件,用于展示大量数据列表。为了提高代码的复用性和可维护性,开发者通常会创建一个"万能适配器"(Universal Adapter),来适应各种不同类型的ListView需求。这个适配器...
【万能适配器项目案例】是一个典型的Android开发实践,主要关注如何灵活运用Adapter机制来实现ListView等组件的数据展示。在Android中,Adapter是连接数据源与视图的关键桥梁,它将数据转换为可以在UI上显示的视图项...