android 缓存adapter,Android BaseAdapter的使用与优化

释放双眼,带上耳机,听听看~!

MainActivity代码

package com.imooc.www.moocdemo;

import android.os.Bundle;

import android.os.PersistableBundle;

import android.support.v7.app.AppCompatActivity;

import android.widget.ListView;

import java.util.ArrayList;

import java.util.List;

/**

* Created by Administrator on 2016/5/11.

*/

public class BaseAdapterActivity extends AppCompatActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.baseadapteractivity);

//数据源

List itemListBeen = new ArrayList<>();

for(int i=0;i<21;i++){

itemListBeen.add(new ItemListBean(R.mipmap.ic_launcher,"我是标题"+i,"我是内容"+i));

}

ListView listView = (ListView) findViewById(R.id.baselistview);

listView.setAdapter(new MyBaseAdapter(this,itemListBeen));

}

}

适配器代码 此处有三种方式 逐步优化 第一种没有优化 第二种使用缓存 第三种 使用缓存并且减少findViewById的操作 提升性能

package com.imooc.www.moocdemo;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

import java.util.List;

/**

* Created by Administrator on 2016/5/11.

*/

public class MyBaseAdapter extends BaseAdapter {

private List mList;

private LayoutInflater mInflater;

public MyBaseAdapter(Context context, List list) {

mList = list;

mInflater = LayoutInflater.from(context);

}

@Override

public int getCount() {

return mList.size();

}

@Override

public Object getItem(int position) {

return mList.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

//简单模式 没有优化

// @Override

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

//

// View view = mInflater.inflate(R.layout.baselistitem,null);

// ImageView imageView = (ImageView) view.findViewById(R.id.iv_image);

// TextView title = (TextView) view.findViewById(R.id.iv_title);

// TextView context = (TextView) view.findViewById(R.id.iv_content);

//

// ItemListBean bean = mList.get(position);

// imageView.setImageResource(bean.ItemImageResid);

// title.setText(bean.ItemTitle);

// context.setText(bean.ItemContent);

//

// return view;

// }

普通模式 利用view 缓存 优化

// @Override

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

// //判断如果此view没有缓存过则新建 入果有缓存直接利用缓存

// if(convertView==null){

// convertView = mInflater.inflate(R.layout.baselistitem,null);

// }

//

// View view = mInflater.inflate(R.layout.baselistitem,null);

// ImageView imageView = (ImageView) convertView.findViewById(R.id.iv_image);

// TextView title = (TextView) convertView.findViewById(R.id.iv_title);

// TextView context = (TextView) convertView.findViewById(R.id.iv_content);

//

// ItemListBean bean = mList.get(position);

// imageView.setImageResource(bean.ItemImageResid);

// title.setText(bean.ItemTitle);

// context.setText(bean.ItemContent);

//

// return convertView;

// }

//优化模式 利用view 缓存 优化同时设置ViewHolder 减少findViewById进行优化

@Override

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

ViewHolder viewHolder;

//判断如果此view没有缓存过则新建 入果有缓存直接利用缓存

if (convertView == null) {

convertView = mInflater.inflate(R.layout.baselistitem, null);

viewHolder = new ViewHolder();

viewHolder.himageView = (ImageView) convertView.findViewById(R.id.iv_image);

viewHolder.htitle = (TextView) convertView.findViewById(R.id.iv_title);

viewHolder.hcontenxt = (TextView) convertView.findViewById(R.id.iv_content);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

ItemListBean bean = mList.get(position);

viewHolder.himageView.setImageResource(bean.ItemImageResid);

viewHolder.htitle.setText(bean.ItemTitle);

viewHolder.hcontenxt.setText(bean.ItemContent);

return convertView;

}

//优化模式使用

class ViewHolder {

public ImageView himageView;

public TextView htitle;

public TextView hcontenxt;

}

}

数据源ListBean代码

package com.imooc.www.moocdemo;

/**

* Created by Administrator on 2016/5/11.

*/

public class ItemListBean {

public int ItemImageResid;

public String ItemTitle;

public String ItemContent;

//Alt+insert 快捷键生成构造函数

public ItemListBean(int itemImageResid, String itemTitle, String itemContent) {

ItemImageResid = itemImageResid;

ItemTitle = itemTitle;

ItemContent = itemContent;

}

}

布局文件代码 比较简单 重要的是 Item布局有两个属性 没用过 值得学习

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/baselistview"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

item布局

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/iv_image"

android:layout_width="60dp"

android:src="https://blog.csdn.net/csdndouniwan/article/details/51375621/@mipmap/ic_launcher"

android:layout_height="60dp" />

android:id="@+id/iv_title"

android:layout_toEndOf="@id/iv_image"

android:layout_width="match_parent"

android:layout_height="30dp"

android:text="TITLE"

android:gravity="center"

android:textSize="25sp"

android:layout_toRightOf="@id/iv_image" />

android:id="@+id/iv_content"

android:layout_width="match_parent"

android:layout_height="30dp"

android:text="我是内容"

android:gravity="center_vertical"

android:textSize="20sp"

android:layout_toRightOf="@id/iv_image"

android:layout_below="@id/iv_title" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值