android viewpager outofmemery问题解决
来源:互联网 发布:在u盘上装ubuntu 编辑:程序博客网 时间:2024/05/14 08:14
以前写viewpager的时候,总是先把view用循环创建出来.然后添加到集合里面,创建adapter的时候,直接把这个集合传递过去,这样的方法一直没什么问题.直到有一天写的一个简单的viewpager却在三星手机中挂掉之后,就开始正视自己了.这样写是不行的,于是有了下面的这些代码:
activity:
package com.bill3g.saferun;import java.util.ArrayList;import java.util.List;import android.R.integer;import android.content.Context;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private Context context;private ViewPager vp_main;private MyPagerAdapter myPagerAdapter;private int[] imageRes = { R.drawable.tab1, R.drawable.tab2,R.drawable.tab3, R.drawable.tab4, R.drawable.tab5, R.drawable.tab6,R.drawable.tab7, R.drawable.tab8, R.drawable.tab9,R.drawable.tab10, R.drawable.tab11, R.drawable.tab12 };private List<Integer> imageList = new ArrayList<Integer>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);context = this;initView();initEvent();}private void initEvent() {getViewList();myPagerAdapter = new MyPagerAdapter(context, imageList);vp_main.setAdapter(myPagerAdapter);}private void initView() {vp_main = (ViewPager) findViewById(R.id.vp_main);}private void getViewList() {for (int i = 0; i < imageRes.length; i++) {imageList.add(imageRes[i]);}}}
adapter:
package com.bill3g.saferun;import java.util.List;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;public class MyPagerAdapter extends PagerAdapter {private Context context;private List<Integer> list;public MyPagerAdapter(Context context, List<Integer> list) {this.context = context;this.list = list;}// 我们在销毁不必要的视图的时候,就可以直接把object转换成view然后移除,这个object就是instantiateItem的时候,返回的东西@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {((ViewPager) container).removeView((View) object);}// 在生成该视图的时候,进行视图的创建,然后设置@Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView imageView = new ImageView(context);imageView.setBackgroundResource(list.get(position));((ViewPager) container).addView(imageView);return imageView;// 返回我们刚刚添加的那个视图}@Overridepublic int getCount() {return list.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}}
我们传递的仅仅是资源的地址,然后在生成该view的时候,才会去创建视图,这样的写法就不会导致异常了
0 0
- android viewpager outofmemery问题解决
- Android加载图片OutOfMemery
- 【Android】ScrollView与ViewPager手势冲突问题解决
- Android ScrollView里ViewPager滑动问题解决
- 完美解决 android 网络下载图片 outofmemery 问题!
- 关于解决android图片设置时outofmemery的问题!!!!!!!!!!
- 关于解决android图片设置时outofmemery的问题!!!!!!!!!!
- Bitmap OutOfMemery
- Android ViewPager的载入大图Out of Memory问题解决
- Error inflating class android.support.v4.view.ViewPager问题解决
- Android中Scrollview与ViewPager冲突问题解决方案
- Android gallery回收可见区之外的图内存 outofmemery 内存溢出 回收
- Android gallery回收可见区之外的图内存 outofmemery 内存溢出 回收
- Android中ViewPager+Fragment懒加载问题解决方案Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
- ScrollView嵌套ViewPager问题解决方案
- ScrollView嵌套ViewPager问题解决方案
- ViewPager无限循环空白页问题解决
- ScrollView嵌套ViewPager问题解决方案
- 通过SSH 密钥连接GitHub/Bitbucket
- 一个简单的计数
- Python 3程序开发指南(第2版 修订版)笔记
- 【Unity3d】如何解决错误:A script behaviour has a different serialization layout when loading
- leetcode--UniqueBinarySearchTreesII
- android viewpager outofmemery问题解决
- ganglia在hadoop中的配置:hadoop-metrics2.properties 以及各监控项含义
- linux jdk 安装总结
- linux 上配置svn
- 进程、线程同步互斥学习 —— 临界区
- javascript原型详解
- Linux音频编程指南
- 日语学习之沪江N3基础 20150618 -6
- 智能指针(smart pointer)(2):unique_ptr