您的位置:首页 > 移动开发 > Android开发

Gallery与衍生的BaseAdapter容器

2016-03-04 21:14 381 查看

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.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
 
@SuppressWarnings("deprecation")
public
class
GalleryBaseAdapterActivity extends Activity {
    private LinearLayout
root = null;
    private
Gallery gallery = null;
    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 = (Gallery)
super
              .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;
       }
 
    }
}
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息