【转】BaseAdapter用法
轉自:http://blog.csdn.net/wangjia55/article/details/7430759
大家好,今天給大家講解一下Android BaseAdapter(基礎適配器)的用法,適配器的作用主要是用來給諸如(Spinner、ListView、GridView)來填充數據的。而(Spinner、ListView、GridView)都有自己的適配器(記起來麻煩)。但是BaseAdapter(一招鮮)對他們來說卻是通用的,為什么這么說呢,首先我們看一下API文檔:
我們看到Android BaseAdapter已經實現了ListAdapter和SpinnerAdapter的接口,而GridView的適配器是實現了ListAdapter接口,只不過是二維的。所以說BaseAdapter對他們三者來說是通用的。
下面我來說一下BaseAdapter的主要用法,就是我們定義一個類(如:MyAdapter)而這個類繼承BaseAdapter.因為它是implements了ListAdapter和SpinnerAdapter的接口,所以要實現里面的方法,代碼如下(未作任何改動的):
private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubreturn null;} }為了便于大家理解,老規矩寫一個簡單的Demo,大家按我的步驟來就OK了。
第一步:新建一個Android工程命名為BaseAdapterDemo
第二步:修改main.xml代碼如下:
<?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"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Welcome to Mr Wei's Blog" /><Spinnerandroid:id="@+id/spinner"android:layout_width="fill_parent"android:layout_height="wrap_content"/><ListViewandroid:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="wrap_content"/><GridViewandroid:id="@+id/gridview"android:layout_width="fill_parent"android:layout_height="wrap_content"/> </LinearLayout>第三步:修該BaseAdapterDemo.java代碼如下:
package com.tutor.baseadapter;import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView;public class BaseAdapterDemo extends Activity {private Spinner mSpinner;private ListView mListView;private GridView mGridView;private MyAdapter mMyAdapter;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setupViews();}public void setupViews() {mMyAdapter = new MyAdapter();mSpinner = (Spinner) findViewById(R.id.spinner);mSpinner.setAdapter(mMyAdapter);mListView = (ListView) findViewById(R.id.listview);mListView.setAdapter(mMyAdapter);mGridView = (GridView) findViewById(R.id.gridview);mGridView.setAdapter(mMyAdapter);mGridView.setNumColumns(2);}// 定義自己的適配器,注意getCount和getView方法private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {// 這里我就返回10了,也就是一共有10項數據項return 10;}@Overridepublic Object getItem(int arg0) {return arg0;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// position就是位置從0開始,convertView是Spinner,ListView中每一項要顯示的view// 通常return 的view也就是convertView// parent就是父窗體了,也就是Spinner,ListView,GridView了.TextView mTextView = new TextView(getApplicationContext());mTextView.setText("BaseAdapterDemo");mTextView.setTextColor(Color.RED);return mTextView;}} }第四步:運行程序效果圖如下:
效果圖一:
效果圖二:
下面是我們的重點了,我們平常看的應用列表什么的,不是單單的一個TextView就可以了事的,所以我們可以在Layout里事先定義好布局。這里我新建了一個名叫baseadapter_provider.xml文件,代碼如下:
<?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"><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/icon"/><TextViewandroid:id="@+id/textview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="BaseAdapter"/> </LinearLayout>將getView()方法修改如下:
@Override public View getView(int position, View convertView, ViewGroup parent) {// position就是位置從0開始,convertView是Spinner,ListView中每一項要顯示的view// 通常return 的view也就是convertView// parent就是父窗體了,也就是Spinner,ListView,GridView了.// TextView mTextView = new TextView(getApplicationContext());// mTextView.setText("BaseAdapterDemo");// mTextView.setTextColor(Color.RED);// return mTextView;//LayoutInflater不會的參照我的 Android 高手進階教程(五)convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.baseadapter_provider,null);TextView mTextView = (TextView)convertView.findViewById(R.id.textview);mTextView.setText("BaseAdapterDemo" + position);mTextView.setTextColor(Color.RED);return convertView; }再次運行看一下效果圖如下:
轉載于:https://www.cnblogs.com/dingchao823/p/4811205.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【转】BaseAdapter用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实验一个最小的PYTHON服务器编程
- 下一篇: 启动和停止Oracle服务bat脚本