实例二:Gallery上应用BaseAdapter
  main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <ImageView 
        android:id="@+id/img"
        android:layout_width="480px"
        android:layout_height="480px"
        android:layout_gravity="center"
/>
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:spacing="3dp"
        android:layout_gravity="bottom"
/>

</LinearLayout>
  Activity:这部分里的getView没有优化,调试了很久还没调通,暂时还是用的最基本的方法。会专门找个时间把Gallery内存泄露的部分写一下,因为图片资源很多的时候会引起out of memory的错误
package com.loulijun.demo16;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class Demo16Activity extends Activity {
    private Gallery mGallery;
    private ImageView mImg;
    //图片数组
    private int[] pics = {
            R.drawable.pic1,
            R.drawable.pic2,
            R.drawable.pic3,
            R.drawable.pic4,
            R.drawable.pic5,
            R.drawable.pic6
    };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mImg = (ImageView)findViewById(R.id.img);
        mGallery = (Gallery)findViewById(R.id.gallery);
        MyAdapter adapter = new MyAdapter(this);
        mGallery.setAdapter(adapter);
        mGallery.setOnItemClickListener(new Gallery.OnItemClickListener()
        {

@Override
            public void onItemClick(AdapterView<?> adapter, View view, int position,
                    long arg3) {
                mImg.setImageResource(pics[position]);
            }
            
        });
    }
    
    //内部类
    class MyAdapter extends BaseAdapter
    {
        //用来接收传递过来的Context上下文对象
        private Context context;

//构造函数
        public MyAdapter(Context context)
        {
            this.context = context;
        }
        @Override
        public int getCount() {
            //返回图片数组大小
            return pics.length;
        }

@Override
        public Object getItem(int position) {
            //根据选中项返回索引位置
            return position;
        }

@Override
        public long getItemId(int position) {
            //根据选中项id返回索引位置
            return position;
        }
        //未优化的getView,这部分可以使用recycle()释放内存、或者BitmapFacotry.Options缩小,或者软引用,或者控制图片资源大小等等很多方法,找时间专门写
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView img = new ImageView(context);
            img.setAdjustViewBounds(true);
            img.setImageResource(pics[position]);
            img.setScaleType(ImageView.ScaleType.FIT_XY);
            img.setLayoutParams(new Gallery.LayoutParams(120,120));
            
            return img;
        }    
    }
}
 运行效果:原理都是一样,只不过是布局加载的时候会有区别,不过就这个小区别也让人够恼火的了
 
 

转载于:https://www.cnblogs.com/zwenwen/archive/2012/02/10/2345660.html

Android杂谈--ListView之BaseAdapter的使用二(转)相关推荐

  1. Android杂谈--ListView之BaseAdapter的使用

    Android杂谈--ListView之BaseAdapter的使用 前言 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却 ...

  2. Android杂谈--ListView之BaseAdapter的使用一(转)

    BaseAdapter是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法      BaseAdapter与其他Adapter有些不一样,其他的Adapter可以直接在其 ...

  3. Android杂谈--ListView之SimpleAdapter的使用

    Android杂谈--ListView之SimpleAdapter的使用 SimpleAdapter SimpleAdapter是扩展性最好的适配器,可以定义各种你想要的布局,而且使用很方便 Simp ...

  4. Android杂谈--ListView之ArrayAdapter的使用

    Android杂谈--ListView之ArrayAdapter的使用 ArrayAdapter 总是感觉写自己的博客才更能够学到东西,网上尽管有很多好的资料,但是参差不齐,需要浪费大量时间才能够找到 ...

  5. android 自定义baseadapter listview,android之ListView和BaseAdapter的组合使用

    BaseAdapter是基本适配器,功能强大,凡是能用ArrayAdapter和SimpleAdapter解决的,都可以使用BaseAdapter解决. BaseAdapter是一个抽象类,所以需要自 ...

  6. android的listview+BaseAdapter的例子

    准备一个listview的xml,绑定到activity里面的listView的变量 准备一个继承自BaseAdapter的的MyAdapter,构造函数里面传入一个datasource的array, ...

  7. [Android] ListView 实现隔行变色(二)

    涉及知识点:ListView.SimpleAdapter和ListView点击事件等 文章目录 一.运行图 二.代码 文章内容 一.运行图 运行效果: 二.代码 1.activity_main.xml ...

  8. Android Listview 自定义BaseAdapter的实现及Listview优化示例

    上一篇文章中我们讲了Android Listview SimpleAdapter的使用完整示例(实现用户列表)_左眼看成爱的博客-CSDN博客 本示例实现的效果图: 每个item中的checkbox选 ...

  9. Android关于ListView的使用(二)

    我们上次实现了列表中放置内容,类似于这个界面: 但是如何给里面添加资源那,如何控制它显示几列那,如何让他显示网络数据那,这都是要思考的. 我们上次在代码中实现列表的内容的,但是你看今日头条这个图片,他 ...

最新文章

  1. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 初始单纯形表 | 检验数计算 | 入基变量 | 出基变量 )
  2. linux下多线程实现服务端
  3. Leetcode 415. 字符串相加 (每日一题 20210826 同类型题)
  4. Spark Streaming初步使用以及工作原理详解
  5. JZOJ 5618. 【NOI2018模拟3.31】华胥梦天
  6. android 文件 c语言 jni,Android jni 调用的so文件一个函数的反汇编 高手来看看
  7. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换
  8. asp.net web开发步骤_Web 系统安全性测试之会话管理测试
  9. Rufus制作Ubuntu18.04启动盘并为Dell电脑重装系统
  10. c#中调用window的 wmi服务获取本机usb信息
  11. Python网速监控
  12. 软件信息安全杂志《Information Security》2011年11月期下载
  13. 数据库 “投毒”修复方案
  14. php上传文件至腾讯COS
  15. redis:Unable to connect to localhost:6379
  16. 前端三刺客---CSS
  17. JAVA要不要看源码_为什么要看源码、如何看源码,高手进阶必看
  18. 2018年全国高中数学联赛浙江省预赛
  19. ubuntu系统vim常用命令学习以及ubuntu软件下载安装
  20. iOS滚动的导航条(仿网易新闻)

热门文章

  1. InputStreamReader/OutputStreamWriter乱码问题解决
  2. Android实现版本更新提示
  3. Solr环境搭建及IK分词的集成及solrJ的调用(一)
  4. MySQL升级教程(CentOS)
  5. Foundations of Qt Development 学习笔记 Part1 Tips1-50
  6. 1.7-bzip2和bunzip2
  7. Ubuntu12.04 安装 mongodb
  8. 练习5.1更新——四则运算 测试与封装
  9. 用HAproxy+keepalived+mysql Replication 构建基于企业级负载均衡
  10. BESR备份还原SERVER 2003域控制器