之前我们已经写过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);} @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; }}//这里和上面一样,用于替换 这条语句view = LayoutInflater.from(context).inflate(R.layout.msg_write_layout, null);
最后就是调用,还是一样的调用!!!!