PullToRefreshListView上拉刷新,下拉加载

来源:互联网 发布:strutting it 编辑:程序博客网 时间:2024/05/17 22:53

/*

*activity_main

*/

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.bawei.day15_demo01_pulltorefresh01.MainActivity">    <com.handmark.pulltorefresh.library.PullToRefreshListView        xmlns:ptr="http://schemas.android.com/apk/res-auto"        android:id="@+id/pull_refresh_list"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:cacheColorHint="#000000"        android:divider="#19000000"        android:dividerHeight="4dp"        android:fadingEdge="none"        android:fastScrollEnabled="false"        android:footerDividersEnabled="false"        android:headerDividersEnabled="false"        android:smoothScrollbar="true"        ptr:ptrAnimationStyle="rotate"        ptr:ptrHeaderTextColor="#ffffff"        ptr:ptrHeaderSubTextColor="#00ffff"        ptr:ptrHeaderBackground="@null"        ptr:ptrDrawable="@mipmap/ic_launcher"/></RelativeLayout>
/*
 *MainActivity
 */
package com.bawei.day15_demo01_pulltorefresh01;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import android.widget.Toast;import com.bawei.adapter.MyBaseAdapter;import com.bawei.bean.News;import com.bawei.bean.SuperClass;import com.bawei.utils.NetWorkUtil;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    private PullToRefreshListView listView;    private static final String JSON_URL = "http://www.93.gov.cn/93app/data.do?channelId=2&startNum=";    private MyBaseAdapter myAdapter;    private ArrayList<News> newsList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化组件        initView();        //初始化加载数据        initData();    }    private void initData() {        pullToRefreshData();    }    //下拉刷新    private void pullToRefreshData() {        new AsyncTask<String,Integer,String>(){            @Override            protected String doInBackground(String... params) {                String jsonStr = new NetWorkUtil().getJsonHttpURLConnectionGet(JSON_URL+"1");                return jsonStr;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                //解析json                SuperClass superClass = new Gson().fromJson(s, SuperClass.class);                newsList = superClass.getData();                myAdapter = new MyBaseAdapter(MainActivity.this,newsList);                listView.setAdapter(myAdapter);                listView.onRefreshComplete();//停止刷新            }        }.execute();    }    int index = 1;    //上拉加载    private void loadMoreData() {        new AsyncTask<String,Integer,String>(){            @Override            protected String doInBackground(String... params) {                index++;                String jsonStr = new NetWorkUtil().getJsonHttpURLConnectionGet(JSON_URL+index);                return jsonStr;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                //解析json                SuperClass superClass = new Gson().fromJson(s, SuperClass.class);                newsList.addAll(superClass.getData());                myAdapter.notifyDataSetChanged();            }        }.execute();    }    private void initView() {        listView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);        listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {            @Override            public void onRefresh(PullToRefreshBase<ListView> refreshView) {                //当下拉刷新,进入此方法                Toast.makeText(MainActivity.this,"下拉刷新",Toast.LENGTH_SHORT).show();                //加载新数据,刷新显示                pullToRefreshData();            }        });        listView.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {            @Override            public void onLastItemVisible() {                Toast.makeText(MainActivity.this,"上拉显示出listview的最后一行",Toast.LENGTH_SHORT).show();                loadMoreData();            }        });    }}

/*

*NetWorkUtil

*/

package com.bawei.utils;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * Created by dell on 2017-09-15. */public class NetWorkUtil {    public String getJsonHttpURLConnectionGet(String jsonUrl){        URL url = null;        HttpURLConnection httpURLConnection = null;        String strJson = "";        try {            url = new URL(jsonUrl);            httpURLConnection = (HttpURLConnection) url.openConnection();            int code = httpURLConnection.getResponseCode();            if (code == 200){                InputStream inputStream = httpURLConnection.getInputStream();                byte[] bytes = new byte[1024];                int length = 0;                while((length = inputStream.read(bytes)) != -1){                    strJson += new String(bytes,0,length);                }            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return strJson;    }}

/*

*MyBaseAdapter

*/

package com.bawei.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.bawei.bean.News;import com.bawei.day15_demo01_pulltorefresh01.R;import java.util.List;/** * Created by dell on 2017-09-15. */public class MyBaseAdapter extends BaseAdapter{    private Context context;    private List<News> list;    public MyBaseAdapter(Context context, List<News> list) {        this.context = context;        this.list = 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 holder;        if (convertView == null){            holder = new ViewHolder();            convertView = View.inflate(context, R.layout.listview_item,null);            holder.newsName = (TextView) convertView.findViewById(R.id.newsname);            holder.newsTime = (TextView) convertView.findViewById(R.id.newstime);            convertView.setTag(holder);        }else {            holder = (ViewHolder) convertView.getTag();        }        holder.newsName.setText(list.get(position).getTITLE());        holder.newsTime.setText(list.get(position).getSHOWTIME());        return convertView;    }    class ViewHolder{        TextView newsName,newsTime;    }}

/*

*listview_item

*/

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:text="TextView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/newsname"        android:layout_weight="1" />    <TextView        android:text="TextView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/newstime"        android:layout_weight="1" /></LinearLayout>

阅读全文
0 0
原创粉丝点击