AsyncTask与Fragment、PullToRefreshListView使用

来源:互联网 发布:淘宝您的访问受限 编辑:程序博客网 时间:2024/06/05 07:29
package com.mengface.fragment;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import org.apache.http.HttpResponse;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.LinearLayout;import android.widget.ListView;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.mengface.R;import com.mengface.adapter.MaskAdapter;import com.mengface.utils.WebUtil;public class TestFaceFragment extends Fragment implementsOnRefreshListener<ListView> {private PullToRefreshListView pullToRefreshListView;private Context context;private View listView;private MaskAdapter maskAdapter;private LinearLayout linearLayout;private String path = "http://images.payeasy.com.tw/products/6469/3129/3129829.jpg";private InputStream input;private Bitmap bitmap;private List<Bitmap> list;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {this.context = getActivity().getBaseContext();listView = inflater.inflate(R.layout.list_skin, null);linearLayout = (LinearLayout) listView.findViewById(R.id.ll_mask);pullToRefreshListView = (PullToRefreshListView) inflater.inflate(R.layout.mask, null);initDatas();//初始化数据return listView;}private void initDatas() {list = new ArrayList<Bitmap>();new AsyncTask<String, Void, Bitmap>() {@Overrideprotected Bitmap doInBackground(String... params) {if (params[0] != null) {WebUtil webUtil = new WebUtil();HttpResponse httpResponse = webUtil.getResultByGet(params[0]);if (httpResponse.getStatusLine().getStatusCode() == 200) {try {input = httpResponse.getEntity().getContent();bitmap = BitmapFactory.decodeStream(input);} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return bitmap;}protected void onPostExecute(Bitmap result) {list.add(result);maskAdapter = new MaskAdapter(context, list, listView);pullToRefreshListView.setAdapter(maskAdapter);pullToRefreshListView.setMode(Mode.BOTH);pullToRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {@Overridepublic void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {new FindMaskTask().execute(path);Log.d("tab", "down");}@Overridepublic void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {// TODO Auto-generated method stubnew FindMaskTask().execute(path);}});linearLayout.addView(pullToRefreshListView);};}.execute(path);}@Overridepublic void onRefresh(PullToRefreshBase<ListView> refreshView) {// TODO Auto-generated method stub}private class FindMaskTask extends AsyncTask<String, Void, Bitmap> {@Overrideprotected Bitmap doInBackground(String... params) {if (params[0] != null) {WebUtil webUtil = new WebUtil();HttpResponse httpResponse = webUtil.getResultByGet(params[0]);if (httpResponse.getStatusLine().getStatusCode() == 200) {try {input = httpResponse.getEntity().getContent();bitmap = BitmapFactory.decodeStream(input);} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return bitmap;}@Overrideprotected void onPostExecute(Bitmap result) {// TODO Auto-generated method stubsuper.onPostExecute(result);list.clear();list.add(result);maskAdapter.notifyDataSetChanged();//通知数据更新pullToRefreshListView.onRefreshComplete();//数据更新完成try {input.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

1 0
原创粉丝点击