Android程序开发ListView+Json+异步网络图片加载+滚动翻页的例子(图

2019-12-10 19:13:18刘景俊

Json数据来源(这里的例子中把json字符串直接写在代码中了,实际项目中需要改成从网络读取,例子中已经使用了多线程):

package COM.Example.Main;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import android.database.MatrixCursor;
import android.widget.ListView;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class stringGetJson {
// 设置临时ID,在项目中将被现实的id取代
private int id = 0;
public stringGetJson() {
super();
}
//通过getJson方法从Json字符串获取User的列表
public LinkedList<User> getJson() {
String jsonData = "[{"Name":"xinuxForJson1","Pic":"http://www.easck.com/uploads/110414/1_234626_5.jpg"},{"Name":"xinuxForJson2","Pic":"http://www.easck.com/uploads/110414/1_234626_3.jpg"},{"Name":"xinuxForJson3","Pic":"http://www.easck.com/uploads/110414/1_234626_4.jpg"},{"Name":"xinuxForJson4","Pic":"http://www.easck.com/fengmian/201104/tupian1/8.jpg"},{"Name":"xinuxForJson5","Pic":"http://www.easck.com/fengmian/201104/tupian1/10.jpg"},{"Name":"xinuxForJson6","Pic":"http://www.easck.com/fengmian/201104/tupian1/7.jpg"},{"Name":"xinuxForJson7","Pic":"http://www.easck.com/fengmian/201104/tupian1/11.jpg"},{"Name":"xinuxForJson8","Pic":"http://www.easck.com/fengmian/201104/tupian1/12.jpg"},{"Name":"xinuxForJson9","Pic":"http://www.easck.com/fengmian/201104/tupian1/9.jpg"},{"Name":"xinuxForJson10","Pic":"http://www.easck.com/fengmian/201104/tupian/7.jpg"}]";
Type listType = new TypeToken<LinkedList<User>>() {}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);
return users;
}
//为getJson提供了数据实体类
final static class User {
public String Name;
public String Pic;
}
}

图片下载AsyncTask

package COM.Example.Main;
import COM.Example.FunctionUtility.Download;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.widget.ImageView;
public class downImageTask extends AsyncTask<ImageView, Void, Bitmap> {
ImageView gView = null;
@Override
protected Bitmap doInBackground(ImageView... arg0) {
gView = (ImageView)arg0[0];
return Download.getBitmapFromUrl(gView.getTag().toString());
}
@Override
protected void onPostExecute(Bitmap result) {
if(result != null){
this.gView.setImageBitmap(result);
}
this.gView = null;
}
}