20.优化后的SimplerAdapyer,主要是实例对象,赋值分离,优化的更好

本文介绍了一种优化Android中ListView Adapter性能的方法,通过改进Adapter的实现方式,如将对象实例化过程移到getView()方法之外,使用ViewHolder模式减少findViewById()的调用次数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我们已经写过adapter该怎么使用,但是性能不够优化,这里我们将优化性能


首先还是编写adapter代码

package Adapter;

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;

import Bean.HomeMsgBean;
import app.coolweather.com.weibo.R;

/**用于
 * Created by Administrator on 2016/9/4.
 *十八章的重点:将超链接转换成不是超链接的数据,并且解析,得到你想要的数据
 * holder.txt_wb_item_from.setMovementMethod(LinkMovementMethod.getInstance());       这句话表示能不能实现listview中控件的点击
* holder.txt_wb_item_from.setText("来着:"+Html.fromHtml(s.getSource())); 
*/
public class HomeMsgAdapter extends BaseAdapter {

    private List<HomeMsgBean> list;      //list的作用是将数据放入Adapter中



    private LayoutInflater mInflater;   //将实例化对象的过程放在getView()外面



    public HomeMsgAdapter(Context context,List<HomeMsgBean> list){

        this.list=list;
        mInflater = LayoutInflater.from(context);                     
 
//这里和上面一样,用于替换 这条语句view = LayoutInflater.from(context).inflate(R.layout.msg_write_layout, null);
} @Override public int getCount() { return list==null?0:list.size(); } @Override public Object getItem(int position) { return list==null?null:list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) {// View view = convertView;// if(view==null){// Holder holder=new Holder();// view = LayoutInflater.from(context).inflate(R.layout.msg_write_layout, null);//加载布局文件,该布局文件为listview中的文件,返回v对象,即自己的模板文件// //创建对象// holder.user_content_textView= (TextView) view.findViewById(R.id.user_content);// holder.user_head= (ImageView) view.findViewById(R.id.user_head);// holder.commont_head=(ImageView)view.findViewById(R.id.user_head_one);// holder.user_time=(TextView)view.findViewById(R.id.time_put);// holder.commont_child=(TextView)view.findViewById(R.id.user_content_one);// holder.commont_head_two=(ImageView)view.findViewById(R.id.user_head_two);// //给各个对象赋值// holder.user_content_textView.setText(list.get(position).getName());// holder.user_head.setImageResource(list.get(position).getHead()); //setImageResource()中间填写R.drawable.picture// holder.commont_head.setImageResource(list.get(position).getCommont());// holder.user_time.setText(list.get(position).getContent());// holder.commont_child.setText(list.get(position).getContent_child());// holder.commont_head_two.setImageResource(list.get(position).getCommont_head()); //setImageResource()中间填写R.drawable.picture//// } return createViewFromResource(position,convertView); //将初始化复制分离 } private View createViewFromResource(int position, View convertView) { View v; if (convertView == null) { v = mInflater.inflate(R.layout.msg_write_layout, null); //这里填充的布局就是上面listview中的子布局 } else { v = convertView; } bindView(position, v); return v; } private void bindView(int position,View view){ //在这里实现初始化 Holder holder=new Holder(); holder.user_content_textView= (TextView) view.findViewById(R.id.user_content); holder.user_head= (ImageView) view.findViewById(R.id.user_head); holder.commont_head=(ImageView)view.findViewById(R.id.user_head_one); holder.user_time=(TextView)view.findViewById(R.id.time_put); holder.commont_child=(TextView)view.findViewById(R.id.user_content_one); holder.commont_head_two=(ImageView)view.findViewById(R.id.user_head_two); //给各个对象赋值 holder.user_content_textView.setText(list.get(position).getName()); holder.user_head.setImageResource(list.get(position).getHead()); //setImageResource()中间填写R.drawable.picture holder.commont_head.setImageResource(list.get(position).getCommont()); holder.user_time.setText(list.get(position).getContent()); holder.commont_child.setText(list.get(position).getContent_child()); holder.commont_head_two.setImageResource(list.get(position).getCommont_head()); //setImageResource()中间填写R.drawable.picture } //静态类用于声明各个控件的对象,实现性能的优化 private static class Holder{ TextView user_content_textView; ImageView user_head; ImageView commont_head; TextView user_time; TextView commont_child; ImageView commont_head_two; }}


最后就是调用,还是一样的调用!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值