android 获取json 图片,android GridView 通过json显示网络图片和文字

这个博客介绍了如何创建一个自定义的GridViewAdapter,用于显示包含图片和文本的数据。内容包括设置适配器的基本结构,从列表中获取数据,以及如何使用Bitmap处理网络图片,包括下载、缩放和错误处理。适配器还包含了一个内部类MyView,用于持有ImageView和TextView。
摘要由CSDN通过智能技术生成

public class GridViewAdapter extends BaseAdapter {

private List

String>> list;

private Context context;

public GridViewAdapter(Context context,

List

String>> list) {

this.list = list;

this.context = context;

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return list.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

public View getView(int position, View convertView, ViewGroup

parent) {

MyView tag;

if (convertView == null) {

View v = LayoutInflater.from(context).inflate(

R.layout.gridview_list, null);

tag = new MyView();

tag.imageView = (ImageView)

v.findViewById(R.id.grid_image);

tag.textView = (TextView)

v.findViewById(R.id.grid_time);

v.setTag(tag);

convertView = v;

} else {

tag = (MyView) convertView.getTag();

}

String image_path = list.get(position).get("itemImage");

String text = list.get(position).get("itemText");

Bitmap bm = getBitMap(context, image_path);

if (bm == null) {

bm =

BitmapFactory.decodeResource(context.getResources(),

R.drawable.error);

Log.i("BitmapPicture", "picture is null!!");

}

Bitmap newBit = Bitmap.createScaledBitmap(bm, 400, 300,

true);

tag.imageView.setImageBitmap(newBit);

tag.textView.setText(text);

return convertView;

}

public synchronized Bitmap getBitMap(Context c, String url)

{

URL myFileUrl = null;

Bitmap bitmap = null;

try {

myFileUrl = new URL(url);

} catch (MalformedURLException e) {

bitmap = BitmapFactory.decodeResource(c.getResources(),

R.drawable.error); // 当网络连接异常后,给个默认图片

return bitmap;

}

try {

// 打开网络连接

HttpURLConnection conn = (HttpURLConnection) myFileUrl

.openConnection();

conn.setDoInput(true);

conn.connect();

InputStream is = conn.getInputStream(); // 把得到的内容转换成流

int length = (int) conn.getContentLength(); // 获取文件的长度

if (length != -1) {

byte[] imgData = new byte[length];

byte[] temp = new byte[512];

int readLen = 0;

int destPos = 0;

while ((readLen = is.read(temp)) > 0) {

System.arraycopy(temp, 0, imgData, destPos, readLen);

destPos += readLen;

}

bitmap = BitmapFactory.decodeByteArray(imgData, 0,

imgData.length);

}

} catch (IOException e) {

bitmap = BitmapFactory.decodeResource(c.getResources(),

R.drawable.error);

return bitmap;

}

return bitmap;

}

}

class MyView {

ImageView imageView;

TextView textView;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值