android 当中baseAdapter的简单使用

  Android BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner、ListView、GridView)来填充数据的。而(Spinner、ListView、GridView)都有自己的适配器(记起来麻烦)。但是若直接使用baseAdapter的话就不用担心这个问题了,首先看看API中的大致介绍

这些就知道为什么baseAdapter是一招鲜了,因为它是实现了adapter,listadapter,spinneradapter的。接下来看一个继承了baseAdapter的类要重写的一些方法:

package com.example.baseadapterforgridview;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;

public class MainActivity extends Activity {
    private GridView mGridView;
    private mBaseAdapter baseAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        baseAdapter = new mBaseAdapter();
        mGridView = (GridView)findViewById(R.id.gridView);
        mGridView.setAdapter(baseAdapter);

    }
    class mBaseAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 42;
        }

        @Override
        public Object getItem(int position) {
            // 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
            LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
            View mView = inflater.inflate(R.layout.item, null);
//            TextView mTextView = new TextView(getApplicationContext());
//            mTextView.setText("BaseAdapterDemo");
//            mTextView.setTextColor(Color.RED);
            return mView;
        }

    } 

}

gridview的xml文件:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.baseadapterforgridview.MainActivity" >

     <GridView
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:stretchMode="columnWidth"
        android:columnWidth="120dip"
        android:verticalSpacing="10dip"
        android:horizontalSpacing="10dip"
        android:cacheColorHint="@android:color/transparent"
        android:numColumns="auto_fit"
        >
    </GridView>

</RelativeLayout>

每一个item里面的布局文件:

<?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="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="texViewtest"/>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test"/>

</LinearLayout>

执行的效果:

可以看到,每一个item里面包括了两个元素,一个是textview的内容,另一个是一个button。

在getview()方法里面被注释掉的是一种“加载”布局文件的方法,而使用LayoutInflater~~ 又是另外一种加载xml的方式,这样做的好处是把已经在xml里面定义好的布局文件直接加载拿过来使用。

好啦,这就是一个简单的baseAdapter使用demo,如有不对,希望多多指正。谢谢

时间: 2024-12-16 10:33:33

android 当中baseAdapter的简单使用的相关文章

Android peferenceActivity 自定义标题简单方法

Android peferenceActivity 自定义标题简单方法 peferenceActivity 完全使用定义好的布局. 因此不能简单象其它好窗口进行自定,现在我们需要加 一个自定义标题,比如象其它窗口一样加一个统一topbar. 假设这个topbar的布局是 title.xml 一.标准自定义标题栏方法 Android 提供自定义标题栏方法 我们简单实现. @Override protected void onCreate(Bundle savedInstanceState) { f

Xamarin.Android之Spinner的简单探讨

一.前言 今天用了一下Spinner这个控件,主要是结合官网的例子来用的,不过官网的是把数据写在Strings.xml中的, 某种程度上,不是很符合我们需要的,比较多的应该都是从数据库读出来,绑定上去的.下面是官网的例子: https://developer.xamarin.com/guides/android/user_interface/spinner/ 二.来个简单的Demo 新建一个类 MyType.cs 1 public class MyType 2 { 3 public int Ty

【Android 初学】11、关于Android当中的线程(初级)

Start Android 1.回顾Java当中的线程概念 1)线程的两种实现方式 2)线程的生命周期 3)多线程同步 (多个线程访问同一个资源,在同) 2.MainThread与Worker Thread 1)UI相关的代码就是MainThread 2)其他代码就是WorkerThread(不允许操作UI,ProgressBar可以) 3)在一个应用程序当中,主线程通常用于接收用户的输入,以及将运算的结果反馈给用户(也就是主线程不能阻塞) 对于一些可能会产生阻塞的操作,必须放在Worker T

android当中Binder机制,Looper与MessageQueue机制

上周四讨论内容:android 当中Binder机制,Looper与MessageQueue相关知识,相关链接: http://blog.csdn.net/innost/article/details/6124685 http://blog.csdn.net/innost/article/details/6055793 android当中Binder机制,Looper与MessageQueue机制,布布扣,bubuko.com

Xamarin.Android之封装个简单的网络请求类

一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于HttpClient和HttpWebRequest两种方式的封装. 由于对这一块还不是很熟悉,所以可能不是很严谨. 二.先上封装好的代码 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Json

【转】android json解析及简单例子

JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.JSON相对于XML来讲,数据的体积小 4.JSON与JavaScript的交互更加方便

android当中taskAffinity属性与launchMode相关

一.本文尝试解释以下问题 1.  Activity被启动之后放在哪个任务栈当中?与哪些因素有关? 2.  Activity的四种启动模式对Activity的启动有哪些影响? 3.  在Activity中使用startActivityForResult(intent, REQUESTCODE);和onActivityResult() 是否与被启动的Activity的launchMode有关?如果有关,有什么关系? 二.Activity被启动之后放在哪个任务栈当中?与哪些因素有关? 1.基本论断:A

android中Baseadapter的 getItem 和 getItemId 的作用和重写

重写Baseadapter时,我们知道需要重写以下四个方法:getCount,getItem(int position),getItemId(int position),getView方法, getCount决定了listview一共有多少个item,而getView返回了每个item项所显示的view. 可是getItem(int position),getItemId(int position)有什么作用呢?该怎么重写呢? 首先看 getItem: @Override public Obje

android进程间共享简单数据

我们知道,在android中,保存简单的数据最方便的就是使用SharedPreferences,然而,SharedPreferences虽然说也可以设置成进程间共享数据,但是并不可靠(更致命的是,不同级别的应用是无法使用SharedPreferences进行共享的,比如,普通应用无法读取系统应用的SharedPreferences数据). 那如何才能进行简单数据的跨进程共享呢,Settings.System可以很方便的进行跨进程共享数据,使用凡是也很简单: //往系统配置表里添加自定义数据 Se