您的位置:首页 > 理论基础 > 计算机网络

ListView中混合使用Drawable文件夹资源和网络资源

2012-05-19 19:36 211 查看
1、listview.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:background="#FFFFFF">



<ImageView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/image"

android:src="@drawable/icon_1"

android:visibility="gone"></ImageView>



<ListView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/listview"></ListView>



</LinearLayout>

2、listitem.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal">



<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom"

android:id="@+id/img"

/>

<TextView android:id="@+id/listtext"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#000000"

android:textSize="18dip" ></TextView>

</LinearLayout>

3、

package moile.drawable.main;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

public class ListViewActivity extends Activity {

private ImageView imageView ;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.listview);

imageView = (ImageView)this.findViewById(R.id.image); //放置该ImageView是为了能够设置ListView中图片的大小



byte[] data = null;//1、使用Bitmap的方式

try {

data = this.getImage("http://online.sccnn.com/icon/1202/01.png");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}//得到图片的二进制数据

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//生成位图

ListView listView = (ListView)this.findViewById(R.id.listview);



List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();

HashMap<String, Object> map = new HashMap<String, Object>();

map.put("ItemImg",R.drawable.icon);

map.put("ItemTitle", "第一行");

list.add(map);



map = new HashMap<String, Object>();

map.put("ItemImg",R.drawable.icon_1);

map.put("ItemTitle", "第二行");

list.add(map);



map = new HashMap<String, Object>(); //1、使用Bitmap的方式

map.put("ItemImg",bitmap);

map.put("ItemTitle", "我的Test");

list.add(map);



SimpleAdapter m = new SimpleAdapter(this,list,R.layout.listitem,

new String[]{"ItemImg","ItemTitle"},

new int[]{R.id.img,R.id.listtext});



listView.setAdapter(m);



m.setViewBinder(new SimpleAdapter.ViewBinder() {

@Override

public boolean setViewValue(View view, Object data,

String textRepresentation) {

// TODO Auto-generated method stub

if(view instanceof ImageView && data instanceof Bitmap){ //1、使用Bitmap的方式

ImageView iv = (ImageView) view;

Bitmap bitmap = (Bitmap) data;

Bitmap b = Bitmap.createScaledBitmap(bitmap, imageView.getDrawable().getIntrinsicWidth(), imageView.getDrawable().getIntrinsicHeight(), true);//创建一个可以缩放的位图对象

iv.setImageBitmap(b);

return true;

}else

return false;

}

});

}



public byte[] getImage(String path) throws Exception{

URL url = new URL(path);

//get //post

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setRequestMethod("GET");

conn.setConnectTimeout(5*1000);

InputStream inStream = conn.getInputStream();



ByteArrayOutputStream outStream = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = 0;

while( (len = inStream.read(buffer)) !=-1 ){

outStream.write(buffer, 0, len);

}

byte[] data = outStream.toByteArray();//图片的二进制数据

outStream.close();

inStream.close();

return data;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐