listview优化加强版
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
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.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List; /**
* Created by lenovo on 2017/12/1.
*/ public class MyAdapter extends BaseAdapter {
private List<Result.NewslistBean>data;
private Context context; public MyAdapter(List<Result.NewslistBean> data, Context context) {
this.data = data;
this.context = context;
} @Override
public int getCount() {
return data.size();
} @Override
public Object getItem(int i) {
return data.get(i);
} @Override
public long getItemId(int i) {
return i;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.item, null);
viewHolder = new ViewHolder();
viewHolder.title= view.findViewById(R.id.text1);
viewHolder.text= view.findViewById(R.id.description);
viewHolder.img= view.findViewById(R.id.image);
view.setTag(viewHolder);//绑定ViewHolder对象
}
else {
viewHolder = (ViewHolder)view.getTag();//取出ViewHolder对象
} viewHolder.text.setText(data.get(i).getTitle());
viewHolder.title.setText(data.get(i).getCtime());
new MyTask(viewHolder.img).execute(data.get(i).getPicUrl());
return view;
} /*存放控件*/
class ViewHolder {
public TextView title;
public TextView text;
public ImageView img;
}
class MyTask extends AsyncTask<String,Void,Bitmap> {
private ImageView img; public MyTask(ImageView img) {
this.img = img;
} //运行在后台,进行网络请求,子线程
@Override
protected Bitmap doInBackground(String... strings) {//...可变长类型 string....相当于 String[] Bitmap bitmap=null; try {
//1.创建URL
URL url=new URL(strings[0]);
//2.打开连接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //3.设置
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
//4.判断响应码
if(urlConnection.getResponseCode()==200){
//5.获取数据
InputStream inputStream = urlConnection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); } } catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} return bitmap;
} //在进行网络请求得到数据之后,要操作的事件,,解析,更新ui
@Override
protected void onPostExecute(Bitmap s) {
img.setImageBitmap(s); }
}
}
listview优化加强版的更多相关文章
- listview优化 汇总
1,listview加载性能优化ViewHolder 转自: http://blog.csdn.net/jacman/article/details/7087995 在android开发中Listvi ...
- Android 常驻与很驻型广播的差别,及ListView优化,Android新手基本知识巩固
1.常驻型广播 常驻型广播,当你的应用程序关闭了,假设有广播信息来,你写的广播接收器相同的能接受到. 他的注冊方式就是在你的应用程序中的AndroidManifast.xml进行注冊. 通常说这样 ...
- 内存泄露--contentView缓存使用与ListView优化
引起Android内存泄露有很多种原因,下面罗列了一些问题,以后会一一解决 1.构造Adapter时没有使用缓存convertView(衍生出ListView优化问题) 2.查询数据库游标没有关闭 3 ...
- Android——ListView优化
1.ListView基本概念 列表显示需要三个元素: ListView:用来展示列表的View. 适配器:用来把数据映射到ListView上 数据:具体的将被映射的字符串,图片或基本组件 适配器类型分 ...
- Android零基础入门第43节:ListView优化和列表首尾使用
原文:Android零基础入门第43节:ListView优化和列表首尾使用 前面连续几期都在学习ListView的各种使用方法,如果细心的同学可能会发现其运行效率是有待提高的,那么本期就来一起学习有哪 ...
- Adaptert Listview 优化
这次是关于Listview的优化的,之前一直采用愚蠢的方式来使用listview,出现的情况就是数据多的话下拉的时候会出现卡顿的情况,内存占用多.所以学习了关于listview的优化,并且这也是普遍使 ...
- Android开发之ListView详解 以及简单的listView优化
ListView列表视图 最常用的控件之一,使用场景例如:微信,手机QQ等等. android:divider:每个item之间的分割线,可以使用图片或者色值. android:dividerHeig ...
- listview优化技术
1.在adapter中的getView方法中尽量少使用逻辑 2.尽最大可能避免GC 3.滑动的时候不加载图片 4.将ListView的scrollingCache和animateCache设置为fal ...
- ListView优化中ViewHolder要不要定义为static静态内部类?
给学生讲课的时候,发现存在这个问题,下来百度了下,发现很纠结,涉及到了内部类对外部类的引用,静态类的生命周期等java知识,现总结如下: static class ViewHolder { //定义l ...
随机推荐
- JS难点--组件开发
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...
- 博客迁移至 http://www.loveli.site
对于博客园的Markdow 支持太过...,你懂的, 以后博客迁移至:http://www.loveli.site
- java 随记
后台开发的过程中积累的关于java的杂记 架构 SSH框架 为什么要分层? 因为分层使代码变得清晰,容易写也容易阅读,更重要的是让代码扩展性更好,层与层之间的改动不会互相影响 各层的分工 dao--与 ...
- Python Web框架篇:Django Model基础
model是关于你的数据的单一的,确定的信息来源. 它包含您正在存储的数据的基本字段和行为.Django通过抽象化的模型层(models)为你的网络应用提供对于数据的结构化处理和操作处理,数据库相关的 ...
- javascript中new操作符
当代码var p= new Person("tom")执行时,其实内部做了如下几件事情: 1.创建一个空白对象(new Object()). 2.拷贝Person.prototyp ...
- CSS 备忘
border-radius : 10px / 40px 10表示X轴半径 40表示Y轴半径 font:italic bold 13px/13px arial,sans-serif; ...
- HTML DOM应用案例1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue.js项目安装
Vue.js 安装 NPM 方法安装vue.js项目 npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v 2.3.0 #升级 npm npm install np ...
- [java语言]——InetAddress类的getByName()方法
InetAddress---表示互联网协议(IP)地址 ---InetAddress.getByName("www.163.com")----在给定主机名的情况下确定主机的IP地址 ...
- ASP.NET没有魔法——ASP.NET Identity与授权
一个完整的ASP.NET的请求中会存在身份验证(Authentication)阶段以及授权(Authorization)阶段,英文单词Authentication和Authorization非常相似, ...