Gallery与衍生的BaseAdapter容器
新建一个继承Activity类的GalleryBaseAdapterActivity,并设置布局文件为:gallerybaseadapter.xml。
首先在布局文件中添加一个Gallery。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
<Gallery android:id="@+id/gallerybaseadapter_gallery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout> |
在Activity代码中设置点击Gallery图片后,显示一个Dialog。
package lyx.feng.second;
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Random;
import lyx.feng.simpletextdemo.R; import android.app.Activity; import android.app.AlertDialog; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget. import android.widget.ImageView; import android.widget.LinearLayout;
@SuppressWarnings("deprecation") public class GalleryBaseAdapterActivity extends Activity { private LinearLayout root = null; private private List<Integer> list = new ArrayList<Integer>();
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.gallerybaseadapter); this.root = (LinearLayout) super .findViewById(R.id.gallerybaseadapter_root); this.gallery = ( .findViewById(R.id.gallerybaseadapter_gallery); Field fields[] = R.drawable.class.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { if (fields[i].getName().startsWith("icon_")) { try { list.add(fields[i].getInt(R.drawable.class)); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } this.gallery.setAdapter(new ImageAdapter()); this.gallery.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { root.setBackgroundColor(Color.rgb(new Random().nextInt(255), new Random().nextInt(255), new Random().nextInt(255))); AlertDialog.Builder builder = new AlertDialog.Builder( GalleryBaseAdapterActivity.this); ImageView imageView = new ImageView( GalleryBaseAdapterActivity.this); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setImageResource(list.get(gallery .getSelectedItemPosition())); builder.setView(imageView); builder.create().show(); } });
}
private class ImageAdapter extends BaseAdapter {
@Override public int getCount() { return list.size(); }
@Override public Object getItem(int position) { return list.get(position); }
@Override public long getItemId(int position) { return position; }
@Override public View getView(int position, View convertView, ViewGroup parent) { ImageView view = new ImageView(GalleryBaseAdapterActivity.this); view.setImageResource(list.get(position)); return view; }
} }
|