AndroidベースクラスのBaseAdapter

27312 ワード

http://www.cnblogs.com/mandroid/archive/2011/04/05/2005525.html
BaseAdapterは、Androidアプリケーションでよく使用されるベースデータアダプタについて、インタフェースクラスのAdapterから継承されたListView、Spinner、Gallery、GridViewなどのUI表示コンポーネントにデータのセットを転送することを主な用途としています.
1、Adapter類の紹介
1)、Adapter関連クラス構造を下図に示す.
Android基础类之BaseAdapter_第1张图片
Adapterサブクラスをカスタマイズするには、上記のいくつかの方法を実装する必要があります.最も重要なのはgetView()メソッドです.これは、ListViewの各行のTextView、Galleryの各ImageViewなど、データを取得したViewコンポーネントを返すことです.
2)、AdapterはAndroidアプリケーションにおいて非常に重要な役割を果たし、アプリケーションも非常に広く、データソースとUIコンポーネントの架け橋と見なすことができ、Adapter、データとUIの関係は下図で表すことができる.
Android基础类之BaseAdapter_第2张图片
3)、常用サブクラス
Adapter常用子类
2、BaseAdapterの紹介
BaseAdapterはListAdapterとSpinnerAdapterの2つのインタフェースを実現しており、もちろんListViewやSpinnerなどのUIコンポーネントに直接データを提供することもできる.
関連クラス構造は次の図のようになります.
Android基础类之BaseAdapter_第3张图片
3、例
例1:Galleryは画像のセットを表示します
実行結果:
Android基础类之BaseAdapter_第4张图片
説明:上の行の画像はGalleryギャラリーで、1つのGallery画像をクリックするたびに、同時に下に大きな図の形式で表示されます.
レイアウトファイル:

   
   
   
   
<? 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 ="@string/hello" /> < Gallery android:id ="@+id/gallery1" android:layout_width ="match_parent" android:spacing ="5px" android:layout_height ="wrap_content" ></ Gallery > < ImageView android:id ="@+id/iv" android:layout_gravity ="center_vertical" android:layout_marginTop ="20px" android:layout_width ="320px" android:layout_height ="320px" ></ ImageView > </ LinearLayout >


MainActivityクラス:

    
    
    
    
package com.magc.adapter; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends Activity { private Gallery gallery; private ImageView imgview; private int [] imgs = {R.drawable.a6,R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4,R.drawable.a5}; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); imgview = (ImageView)findViewById(R.id.iv); gallery = (Gallery)findViewById(R.id.gallery1); MyImgAdapter adapter = new MyImgAdapter( this ); gallery.setAdapter(adapter); gallery.setOnItemClickListener( new OnItemClickListener() { // , ResourceID ImageView , @Override public void onItemClick(AdapterView <?> arg0, View view, int position, long arg3) { imgview.setImageResource(imgs[position]); } }); } class MyImgAdapter extends BaseAdapter {      // Adapter MainActivity , MainActivity , imgs private Context context; // Context public MyImgAdapter(Context context) { super (); this .context = context; } /* (non-Javadoc) * @see android.widget.Adapter#getCount() */ @Override public int getCount() { return imgs.length; } /* (non-Javadoc) * @see android.widget.Adapter#getItem(int) */ @Override public Object getItem( int position) { return position; } /* (non-Javadoc) * @see android.widget.Adapter#getItemId(int) */ @Override public long getItemId( int position) { return position; } /* (non-Javadoc) * @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup) */ @Override public View getView( int position, View convertView, ViewGroup parent) { // ( ID) ImageView , ImageView iv = new ImageView(context); // Context , iv.setImageResource(imgs[position]); Log.i( " magc " , String.valueOf(imgs[position])); iv.setLayoutParams( new Gallery.LayoutParams( 80 , 80 )); // Gallery 80*80。 iv.setScaleType(ImageView.ScaleType.FIT_XY); return iv; } } }


例2:アイコンを選択するためのヒントボックス(GalleryとImageSwitcherを組み合わせた画像表示)
続きは...