PullToRefreshListView+网络判断

添加依赖库
compile ‘com.github.userswlwork:pull-to-refresh:1.0.0’
添加权限


android:name=”.MyApption”
activity布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:id="@+id/lv"
    ptr:ptrDrawable="@drawable/default_ptr_flip"
    ptr:ptrAnimationStyle="flip"
    ptr:ptrHeaderBackground="#383838"
    ptr:ptrHeaderTextColor="#FFFFFF">
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/plv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>

</RelativeLayout>

item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:layout_margin="10dp"
    >
<ImageView
    android:id="@+id/img"
    android:layout_width="150dp"
    android:layout_height="150dp" />
    <TextView
        android:id="@+id/tv"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

Activity主方法

public class MainActivity extends AppCompatActivity {
    List<NewsResult.DatalistBean> list=new ArrayList<>();
    private   int  operType=1;
   private  String  url="http://www.meirixue.com/api.php?c=list&a=index";
    private PullToRefreshListView pull;
    private MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pull = (PullToRefreshListView) findViewById(plv);

//首先判断有没有连接网络
        boolean result= TypeUtils.isConn(this);
        if(result){
            //进行数据请求
            initplv();
            Toast.makeText(MainActivity.this,"有网络",Toast.LENGTH_SHORT).show();
        }else{
            TypeUtils.openNetSettingDg(MainActivity.this);
            Toast.makeText(MainActivity.this,"无网络",Toast.LENGTH_SHORT).show();
        }



    }
    public  void initplv(){
        //1.设置模式  BOTH:支持上拉与下拉  PULL_FROM_START:支持下拉   PULL_FROM_END:支持上拉
        pull.setMode(PullToRefreshBase.Mode.BOTH);

        //2.设置头尾布局中的文本
        ILoadingLayout headerLayout = pull.getLoadingLayoutProxy(true, false);//第一个参数为true,代表设置头部布局中文本
        headerLayout.setPullLabel("下拉刷新...");
        headerLayout.setRefreshingLabel("正在刷新...");
        headerLayout.setReleaseLabel("松开刷新.....");

        ILoadingLayout footerLayout = pull.getLoadingLayoutProxy(false, true);//第一个参数为false,代表设置尾部布局中文本
        footerLayout.setPullLabel("加载更多...");
        footerLayout.setRefreshingLabel("正在加载...");
        footerLayout.setReleaseLabel("松开加载.....");

        //3.设置上拉与下拉的监听
        pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                //下拉,刷新回调

                operType=1;
                inittask();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                //上拉,加载

                operType=2;
                inittask();

            }
        });
        inittask();
    }

    public  void  inittask(){
        class  MyTask extends AsyncTask<String,Void,String>{
            @Override
            protected String doInBackground(String... params) {

                try {
                    URL url = new URL(params[0]);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(2000);
                    connection.setReadTimeout(2000);
                    if (connection.getResponseCode()==200){
                        InputStream stream = connection.getInputStream();
                        String s = StreamToString.streamToStr(stream, "utf-8");
                        return s;


                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson  gson=new Gson();
                NewsResult result = gson.fromJson(s, NewsResult.class);
            list .addAll(result.getDatalist());
                setMyAdapter();
                //关闭尾布局
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pull.onRefreshComplete();
                    }
                },500);

            }
        }
        new MyTask().execute(url);
    }
    public  void setMyAdapter(){
           if (adapter==null){
               adapter = new MyAdapter(this,list);
               pull.setAdapter(adapter);
           }else {
               adapter.notifyDataSetChanged();
           }
    }
}

MyAdapter

public class MyAdapter extends BaseAdapter {
    private Context context;
    private List<NewsResult.DatalistBean>list;

    public MyAdapter(Context context, List<NewsResult.DatalistBean> 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.item,null);
            holder.tv=(TextView) convertView.findViewById(R.id.tv);
            holder.img=(ImageView) convertView.findViewById(R.id.img);
            convertView.setTag(holder);
        }else {
            holder=(viewHolder)convertView.getTag();
        }
        holder.tv.setText(list.get(position).getCourse_name());
        String pic = list.get(position).getCourse_pic();
        ImageLoader.getInstance().displayImage(pic,holder.img, ImageUtils.getinitimage());
        return convertView;
    }
    class  viewHolder{
        ImageView img;
        TextView tv;
    }
}

MyApption

public class MyApption extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageUtils.initimageLoader(this);
    }
}

猜你喜欢

转载自blog.csdn.net/aideat/article/details/78826898