<Android>列表、网格、画廊视图及适配器的绑定

列表视图和适配器的绑定

列表视图既可以使用ListView组件,也可以继承ListActivity。显示可以是ArrayAdapter,也可以是游标SimpleCursorAdapter,还可以是继承BaseAdapter展示其它视图。

Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null);

//获得通讯录联系人游标对象Cursor
startManagingCursor(c);

//实例化列表适配器
ListAdapter adapter = new SimpleCursorAdapter(this,
        android.R.layout.simple_list_item_1,
        c,
        new String[] {People.NAME} ,
        new int[] {android.R.id.text1});

setListAdapter(adapter);

14.网格视图(GridView)

网格视图配合BaseAdapter示例,图片缩略图网格显示

public class MainActivity extends Activity {

   private GridView gv;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        gv = (GridView)findViewById(R.id.GridView01);
        gv.setNumColumns(4);

        // gv.setNumColumns(3);

        // String[] strs = {"a","a1","a2","b","b1","b2","c","c1","c2"};

        // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_gallery_item,strs);

        gv.setAdapter(new MyAdapter(this));

    }

    class MyAdapter extends BaseAdapter{

       private Integer[] imgs = {

                     R.drawable.gallery_photo_1,
                     R.drawable.gallery_photo_2,
                     R.drawable.gallery_photo_3,
                     R.drawable.gallery_photo_4,
                     R.drawable.gallery_photo_5,
                     R.drawable.gallery_photo_6,
                     R.drawable.gallery_photo_7,
                     R.drawable.gallery_photo_8,

                     R.drawable.gallery_photo_1,
                     R.drawable.gallery_photo_2,
                     R.drawable.gallery_photo_3,
                     R.drawable.gallery_photo_4,
                     R.drawable.gallery_photo_5,
                     R.drawable.gallery_photo_6,
                     R.drawable.gallery_photo_7,
                     R.drawable.gallery_photo_8

       };

       Context context;

       MyAdapter(Context context){

              this.context = context;

       }

          public int getCount() {

                 return imgs.length;

          }

          public Object getItem(int item) {

                 return item;

          }

          public long getItemId(int id) {

                 return id;

          }

          public View getView(int position, View convertView, ViewGroup parent) {

                  ImageView imageView;

               if (convertView == null) {

                   imageView = new ImageView(context);
                   imageView.setLayoutParams(new GridView.LayoutParams(45, 45));
                   imageView.setAdjustViewBounds(false);
                   imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                   imageView.setPadding(8, 8, 8, 8);

               } else {

                   imageView = (ImageView) convertView;
               }

               imageView.setImageResource(imgs[position]);

               return imageView;
          }
    }
}

15.画廊视图

画廊视图和BaseAdapter配合,底部显示图片缩略图上面显示放大图片

public class MainActivity extends Activity implements OnItemSelectedListener,

          ViewFactory {

   private ImageSwitcher mSwitcher;

   private Integer[] mThumbIds = { R.drawable.sample_thumb_0,
                 R.drawable.sample_thumb_1, R.drawable.sample_thumb_2,
                 R.drawable.sample_thumb_3, R.drawable.sample_thumb_4,
                 R.drawable.sample_thumb_5, R.drawable.sample_thumb_6,
                 R.drawable.sample_thumb_7 };

   private Integer[] mImageIds = { R.drawable.sample_0, R.drawable.sample_1,
                 R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,
                 R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };

   @Override
   public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          setContentView(R.layout.main);

          mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
          mSwitcher.setFactory(this);
          mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
                        android.R.anim.fade_in));
          mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
                        android.R.anim.fade_out));

          Gallery g = (Gallery) findViewById(R.id.gallery);

          g.setAdapter(new ImageAdapter(this));
          g.setOnItemSelectedListener(this);

   }

   public class ImageAdapter extends BaseAdapter {
          public ImageAdapter(Context c) {
                 mContext = c;
          }

          public int getCount() {
                 return mThumbIds.length;
          }

          public Object getItem(int position) {
                 return position;
          }

          public long getItemId(int position) {
                 return position;
          }

          public View getView(int position, View convertView, ViewGroup parent) {
                 ImageView i = new ImageView(mContext);

                 i.setImageResource(mThumbIds[position]);
                 i.setAdjustViewBounds(true);
                 i.setLayoutParams(new Gallery.LayoutParams(
                               LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                 i.setBackgroundResource(R.drawable.picture_frame);
                 return i;
          }
          private Context mContext;
   }

   @Override
   public void onItemSelected(AdapterView<?> adapter, View v, int position,
                 long id) {
          mSwitcher.setImageResource(mImageIds[position]);
   }

   @Override
   public void onNothingSelected(AdapterView<?> arg0) {

   }

   @Override
   public View makeView() {

          ImageView i = new ImageView(this);

          i.setBackgroundColor(0xFF000000);
          i.setScaleType(ImageView.ScaleType.FIT_CENTER);
          i.setLayoutParams(new ImageSwitcher.LayoutParams(
                        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

          return i;
   }
}
时间: 2024-11-10 07:41:20

<Android>列表、网格、画廊视图及适配器的绑定的相关文章

android学习---Gallery画廊视图

Gallery与Spinner有共同父类:AbsPinner,说明Gallery与Spinner都是一个列表框.它们之间的区别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框.Spinner的作用是供用户选择,而Gallery则允许用户通过拖动查看上一个,下一个. Gallery用法与Spinner的用法形似,只要为它提供一个内容Adapter就可以了.Adapter的getView方法返回View作为Gallery列表的列表项.如果程序需要监控Gal

Android 自学之画廊视图(Gallery)功能和用法

Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显示的是一个水平的列表框.Gallery与Spinner有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个.下一个列表项. Gallery常用的XML属性及相关方法 XML属性 相关方法 说明 android:animationDuration setAnim

Android基础——网格视图和适配器

额外新建一个layout,用来布局ImageView组件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_p

Android基础——高级UI组件:下拉框,列表,滚动条视图

布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.andr

1.2列表显示的三元素:数据、视图、适配器

一.列表显示的三元素:数据.视图.适配器 1.ListView这个组件用于显示: 2.适配器用于绑定数据,即将数据映射到ListView上: 3.数据需映射到ListView的数据可以是字符串.图片或者基本的组件. 二.一般R文件报错,有很大的可能是layout的布局文件出错,记得保存后在build-clean project中clean一下,恢复文件. 三:适配器的类型: 1.ArrayAdapter  只能显示一行字. 2.SimpleAdapter 有最好的扩充性,可以定义出各种各样的布局

android列表选择模式的实现

我们或许曾一次又一次的接到这样的需求,有一堆数据需要用户去选择,并且以列表的方式呈现,根据需求,我们需要单选或者复选列表里面的数据,并且最终取得所选数据作下一步的操作.那么对于这个需求,我们聪明的程序员往往都能想到一些解决方案去处理.譬如我,咳咳,虽然我不是很聪明,但是我想到了. [也许这样实现是对的]通常需要选择的列表数据我都会在adapter所绑定的数据实体内增加一个标记代表是否选中,在点击的时候去遍历并改变adapter中的实体标记,通知更新,然后根据标记在adapter的getView方

Gallery画廊视图

画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕上添加Gallery组件,通常使用标记在XML而布局文件中添加. 画廊视图在4.0后已经过期,但是我们仍然可以使用,不过后面我们将用水平的ListView自定义组件来实现这个效果,在自定义视图中讲解. 常用属性:1. android:animationDuration 用于设置列表项切换时的动画持续时间2. and

android列表收缩与展开仿QQ好友列表(非常详细,附源码)

好友QQ列表,可以展开,可以收起,在android中,以往用的比较多的是listview,虽然可以实现列表的展示,但在某些情况下,我们还是希望用到可以分组并实现收缩的列表,那就要用到android的ExpandableListView,今天研究了一下这个的用法,也参考了很多资料动手写了一个小demo,实现了基本的功能,下面直接上效果图以及源代码~! ExpandableListView是一个垂直滚动显示两级列表项的视图,与ListView不同的是,它可以有两层:每一层都能够被独立的展开并显示其子

Android ListFragment实例Demo(自定义适配器)

上一篇文章介绍了ListFragment,其中的ListView并没有自定义适配器,实际上在实际开发中常会用到自定义适配器,是实现更复杂的列表数据展示.所以这篇文章增加了自定义适配器,来进行ListView数据的展示. 实现效果图: 左边是Activity中的一个按钮,点击按钮会出现右边的Fragment相应的数据列表. 代码展示: 布局文件: activity_main: <LinearLayout xmlns:android="http://schemas.android.com/ap