您的位置:首页 > 其它

给ImageView设置标记,实现加载图片

2016-04-05 11:18 435 查看
public class Fragment2 extends Fragment {

private View view;

private ListView listView;

private int positon;

private String path;

Handler handler = new Handler() {

@SuppressLint("NewApi")

public void handleMessage(android.os.Message msg) {

Bitmap bitmap = (Bitmap) msg.obj;

// 拿到bitmap怎么使用

Bundle data = msg.getData();

// 获取tag imageView身上的标记

String tag = data.getString("tag", null);

//在listView上根据tag查找控件

ImageView imageView = (ImageView) listView.findViewWithTag(tag);

if (bitmap != null && imageView != null) {

imageView.setImageBitmap(bitmap);

}

};

};

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

view = inflater.inflate(R.layout.f2_item, container, false);

listView = (ListView) view.findViewById(R.id.f2_listView);

return view;

}

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

}

// 逻辑开始

public void setContent(int position) {

path = "http://v.juhe.cn/weixin/query";

this.positon = position;

MyAsynTask asynTask = new MyAsynTask();

asynTask.execute();

}

class MyAsynTask extends AsyncTask<Void, Void, String> {

@Override

protected String doInBackground(Void... params) {

try {

// 实例化客户端对象

HttpClient httpClient = new DefaultHttpClient();

// 定义一个post

HttpPost httpPost = new HttpPost(path);

List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();

parameters.add(new BasicNameValuePair("key",

"0917c812f187b92e025c9b7c2d4e59b5"));

parameters

.add(new BasicNameValuePair("pno", (positon + 1) + ""));

HttpEntity entity = new UrlEncodedFormEntity(parameters);

httpPost.setEntity(entity);

// 执行post请求

HttpResponse httpResponse = httpClient.execute(httpPost);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if (statusCode == 200) {

InputStream inputStream = httpResponse.getEntity()

.getContent();

String streamToStr = streamToStr(inputStream);

return streamToStr;

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

@Override

protected void onPostExecute(String result) {

super.onPostExecute(result);

// 解析字符串

Gson gson = new Gson();

// json

Weixin fromJson = gson.fromJson(result, Weixin.class);

// 设置数据适配器

listView.setAdapter(new MyAdapter(fromJson));

}

}

/**

* 流转串

*

* @param inputStream

* @return

*/

public static String streamToStr(InputStream inputStream) {

try {

byte[] buffer = new byte[1024];

int len = 0;

ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();

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

arrayOutputStream.write(buffer, 0, len);

}

return arrayOutputStream.toString();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

class MyAdapter extends BaseAdapter {

private Weixin weixin;

private ArrayList<Details> list;

public MyAdapter(Weixin fromJson) {

this.weixin = fromJson;

// 精化集合

list = weixin.result.list;

}

@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;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder = null;

if (convertView == null) {

convertView = View.inflate(getActivity(), R.layout.lv_item,

null);

viewHolder = new ViewHolder();

convertView.setTag(viewHolder);

viewHolder.lv_imageView = (ImageView) convertView

.findViewById(R.id.lv_imageView);

viewHolder.lv_textView = (TextView) convertView

.findViewById(R.id.lv_textView);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

viewHolder.lv_textView.setText(list.get(position).title);

// bitmapUtils展示图片

// ----------------------------------------------------

// BitmapUtils bitmapUtils = new BitmapUtils(getActivity());

// String url = list.get(position).firstImg;

// if(TextUtils.isEmpty(url)){

// viewHolder.lv_imageView.setImageResource(R.drawable.ic_launcher);

// }else{

// url = url.substring(0, url.lastIndexOf("/"));

// // 正常的url

// url = Images.imageThumbUrls[position];

// bitmapUtils.display(viewHolder.lv_imageView, url);

// }

// ---------------------------------------------------------

final String url = Images.imageThumbUrls[position];

// 给imageView设置tag 设置标记

viewHolder.lv_imageView.setTag(url);

new Thread() {

public void run() {

getBitmap(url);

};

}.start();

return convertView;

}

class ViewHolder {

ImageView lv_imageView;

TextView lv_textView;

}

}

public void getBitmap(String path) {

try {

URL url = new URL(path);

HttpURLConnection openConnection = (HttpURLConnection) url

.openConnection();

openConnection.setConnectTimeout(5000);

openConnection.setReadTimeout(5000);

int responseCode = openConnection.getResponseCode();

if (responseCode == 200) {

InputStream inputStream = openConnection.getInputStream();

Bitmap decodeStream = BitmapFactory.decodeStream(inputStream);

Message obtain = Message.obtain();

obtain.what = 1;

// 将imageView身上绑的tag传递给handler

Bundle data = new Bundle();

data.putString("tag", path);

obtain.setData(data);

obtain.obj = decodeStream;

handler.sendMessage(obtain);

}

} catch (Exception e) {

e.printStackTrace();

}

}

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