PullTorefreah上下拉刷新从网络获取

1,清单

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2,依赖

compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

3网络获取图片设置MApp

public void onCreate() {
    super.onCreate();
    ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build();
    ImageLoader.getInstance().init(configuration);
}

4,

HttpUrlConnection联网获取json串

public static String getJson(String urldata) {
    try {
        URL url = new URL(urldata);
        HttpURLConnection httpurlConnection = (HttpURLConnection) url.openConnection();
        httpurlConnection.setRequestMethod("GET");
        httpurlConnection.setReadTimeout(8000);
        int responseCode = httpurlConnection.getResponseCode();
        if (responseCode == 200) {
            InputStream inputStream = httpurlConnection.getInputStream();
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String json = "";
            while ((json = bufferedReader.readLine()) != null) {
                stringBuilder.append(json);
            }
            return stringBuilder.toString();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

5,main

private PullToRefreshListView plv;
String url = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1";
private LinkedList<Bean.NewslistBean> list;
private List<Bean.NewslistBean> data;
private MAdapter adapter;
private ImageLoader instance;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    plv = (PullToRefreshListView) findViewById(R.id.flv);
    plv.setMode(PullToRefreshBase.Mode.BOTH);
    plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
        @Override
        public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
            new MAsyncTask1().execute();
        }

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
            new MAsyncTask2().execute();
        }
    });
    initdata();
    instance = ImageLoader.getInstance();
    list =new LinkedList<Bean.NewslistBean>();
     adapter=new MAdapter();
    plv.setAdapter(adapter);
}

private void initdata() {
    new MAsynctask().execute(url);
}

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

    @Override
    protected String doInBackground(Void... voids) {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        list.addAll(data );
        adapter.notifyDataSetChanged();
        plv.onRefreshComplete();
    }
}

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

    @Override
    protected String doInBackground(Void... voids) {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "";
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        list.addAll(data);
        adapter.notifyDataSetChanged();
        plv.onRefreshComplete();
    }
}

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


    @Override
    protected String doInBackground(String... strings) {
         return HttpUrlConnection.getJson(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Gson gson = new Gson();
        Bean bean = gson.fromJson(s, Bean.class);
        data = bean.getNewslist();
        list.addAll(data);
        adapter.notifyDataSetChanged();
    }
}
class MAdapter extends BaseAdapter{

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }
    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        boolean b = position % 2 == 0;
        if (b) {
            return 0;
        } else {
            return 1;
        }

    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        int itemViewType = getItemViewType(i);
        switch (itemViewType) {
            case 0:
                ViewHolder0 viewHolder0;
                if (view == null) {
                    viewHolder0 = new ViewHolder0();
                    view = View.inflate(MainActivity.this  , R.layout.type0, null);
                    viewHolder0.tupian = (ImageView) view.findViewById(R.id.img);
                    viewHolder0.titles = (TextView) view.findViewById(R.id.tv);
                    view.setTag(viewHolder0);
                } else {
                    viewHolder0 = (ViewHolder0) view.getTag();
                }
                instance.displayImage(list.get(i).getPicUrl(), viewHolder0.tupian);
                viewHolder0.titles.setText(list.get(i).getTitle());
                break;
            case 1:
                ViewHolder1 viewHolder1;
                if (view == null) {
                    viewHolder1 = new ViewHolder1();
                    view = View.inflate(MainActivity.this , R.layout.type1, null);
                    viewHolder1.titles = (TextView) view.findViewById(R.id.tv);
                    view.setTag(viewHolder1);
                } else {
                    viewHolder1 = (ViewHolder1) view.getTag();
                }
                viewHolder1.titles.setText(list.get(i).getTitle());
                break;
        }
        return view;
    }
    class ViewHolder0 {
        ImageView tupian;
        TextView titles;
    }

    class ViewHolder1 {
        TextView titles;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值