PullToRefreshListView

//先导入library包(import Moudle),然后APP 依赖的library包   并且要保持

//然后进行Activity_main的布局

 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">
    <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"/>
</LinearLayout>


//进行相关的方法操作

mport android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ListView;

import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private PullToRefreshListView  lv;
    private int i=1;
    private   Myadapter myadapter;
    private List<JavaBean.ResultBean.DataBean> data;
    private static final String surl="http://v.juhe.cn/toutiao/index?type=&key=2f092bd9ce76c0257052d6d3c93c11b4";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       lv=(PullToRefreshListView)findViewById(R.id.pull_refresh_list);

        //解析数据
        jiexi();

        //刷新的监听
        lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
            @Override
            public void onRefresh(PullToRefreshBase<ListView> refreshView) {
                new AsyncTask<String,Integer,String>(){

                    @Override
                    protected String doInBackground(String... strings) {

                        String str="";
                        try {
                            URL url = new URL("http://v.juhe.cn/toutiao/index?type="+i+"&key=2f092bd9ce76c0257052d6d3c93c11b4");
                            HttpURLConnection http=(HttpURLConnection)url.openConnection();
                            http.setReadTimeout(2000);
                            http.setConnectTimeout(2000);
                            int rc = http.getResponseCode();
                            if(rc==200){
                                InputStream in = http.getInputStream();
                                byte[] b=new byte[1024];
                                int len=0;
                                while((len=in.read(b))!=-1){
                                    str+=new String(b,0,len);
                                }

                            }
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        return str;
                    }

                    @Override
                    protected void onPostExecute(String s) {
                        super.onPostExecute(s);
                        Log.i("TAG",s);
                        List<JavaBean.ResultBean.DataBean> data = new Gson().fromJson(s, JavaBean.class).getResult().getData();
                        Log.i("TAG",data.size()+"");
                        //设置适配器
                        lv.setAdapter(new Myadapter(data,MainActivity.this));
                    }
                }.execute();

            }
        });
        //加载的刷新
        lv.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {
            @Override
            public void onLastItemVisible() {
                new AsyncTask<String,Integer,String>(){

                    @Override
                    protected String doInBackground(String... strings) {

                        String str="";
                        try {
                            i++;
                            URL url = new URL("http://v.juhe.cn/toutiao/index?type="+i+"&key=2f092bd9ce76c0257052d6d3c93c11b4");
                            HttpURLConnection http=(HttpURLConnection)url.openConnection();
                            http.setReadTimeout(2000);
                            http.setConnectTimeout(2000);
                            int rc = http.getResponseCode();
                            if(rc==200){
                                InputStream in = http.getInputStream();
                                byte[] b=new byte[1024];
                                int len=0;
                                while((len=in.read(b))!=-1){
                                    str+=new String(b,0,len);
                                }

                            }
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        return str;
                    }

                    @Override
                    protected void onPostExecute(String s) {
                        super.onPostExecute(s);
                        Log.i("TAG",s);
                        List<JavaBean.ResultBean.DataBean> data1 = new Gson().fromJson(s, JavaBean.class).getResult().getData();
                        Log.i("TAG", MainActivity.this.data.size()+"");
                        //设置适配器
                        data.addAll(data1);
                        myadapter.notifyDataSetChanged();
                        //停止刷新
                       lv.onRefreshComplete();
                    }
                }.execute();
            }
        });


    }

    private void jiexi() {
        new AsyncTask<String,Integer,String>(){

            @Override
            protected String doInBackground(String... strings) {

                String str="";
                try {
                    URL url = new URL("http://v.juhe.cn/toutiao/index?type="+i+"&key=2f092bd9ce76c0257052d6d3c93c11b4");
                    HttpURLConnection http=(HttpURLConnection)url.openConnection();
                    http.setReadTimeout(2000);
                    http.setConnectTimeout(2000);
                    int rc = http.getResponseCode();
                    if(rc==200){
                        InputStream in = http.getInputStream();
                        byte[] b=new byte[1024];
                        int len=0;
                        while((len=in.read(b))!=-1){
                            str+=new String(b,0,len);
                        }

                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return str;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Log.i("TAG",s);
               data = new Gson().fromJson(s, JavaBean.class).getResult().getData();
                Log.i("TAG",data.size()+"");
                //设置适配器
                 myadapter = new Myadapter(data, MainActivity.this);
                lv.setAdapter(myadapter);
            }
        }.execute();


    }
}

//配置适配器和判断子布局的多条目

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageSize;

import java.util.List;



public class Myadapter extends BaseAdapter {
    private List<JavaBean.ResultBean.DataBean> data;
    private Context context;

    public Myadapter(List<JavaBean.ResultBean.DataBean> data, Context context) {
        this.data = data;
        this.context = context;
    }

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

    }

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

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


    //判断子条目的布局
    @Override
    public int getItemViewType(int position) {
        int re=0;
        if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()!=null&&data.get(position).getThumbnail_pic_s03()!=null){
            re=0;
        }
        else if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()!=null&&data.get(position).getThumbnail_pic_s03()==null){
            re=1;
        }
        else if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()==null&&data.get(position).getThumbnail_pic_s03()==null){
            re=2;
        }
        return re;
    }

    @Override
    public int getViewTypeCount() {
        return 3;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder1 holder1=null;
        ViewHolder2 holder2=null;
        ViewHolder3 holder3=null;

        int re = getItemViewType(i);
        if(re==0){
            if(view==null){
                view=View.inflate(context,R.layout.item1,null);

                holder1=new ViewHolder1();

                holder1.tv=(TextView) view.findViewById(R.id.tv);
                holder1.image1=(ImageView)view.findViewById(R.id.image1);
                holder1.image2=(ImageView)view.findViewById(R.id.image2);
                holder1.image3=(ImageView)view.findViewById(R.id.image3);

                view.setTag(holder1);

            }else{
                holder1= (ViewHolder1) view.getTag();
            }
            holder1.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate());
            String thumbnail_pic_s = data.get(i).getThumbnail_pic_s();
            String thumbnail_pic_s02 = data.get(i).getThumbnail_pic_s02();
            String thumbnail_pic_s03 = data.get(i).getThumbnail_pic_s03();
            ImageSize size=new ImageSize(100,100);
            ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder1.image1,size);
            ImageLoader.getInstance().displayImage(thumbnail_pic_s02,holder1.image2,size);
            ImageLoader.getInstance().displayImage(thumbnail_pic_s03,holder1.image3,size);
        }else if(re==1){
            if(view==null){
                view=View.inflate(context,R.layout.item2,null);
                holder2=new ViewHolder2();
                holder2.tv=(TextView) view.findViewById(R.id.tv);
                holder2.image1=(ImageView)view.findViewById(R.id.image1);
                holder2.image2=(ImageView)view.findViewById(R.id.image2);

                view.setTag(holder2);
            }else{
                holder2= (ViewHolder2) view.getTag();
            }
            holder2.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate());
            String thumbnail_pic_s = data.get(i).getThumbnail_pic_s();
            String thumbnail_pic_s02 = data.get(i).getThumbnail_pic_s02();

            ImageSize size=new ImageSize(100,100);
            ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder2.image1,size);
            ImageLoader.getInstance().displayImage(thumbnail_pic_s02,holder2.image2,size);
        }else if(re==2){
            if(view==null){
                view= View.inflate(context,R.layout.item3,null);
                holder3=new ViewHolder3();
                holder3.tv=(TextView) view.findViewById(R.id.tv);
                holder3.image1=(ImageView)view.findViewById(R.id.image1);

                view.setTag(holder3);
            }else{
                holder3= (ViewHolder3) view.getTag();
            }
            holder3.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate());
            String thumbnail_pic_s = data.get(i).getThumbnail_pic_s();
            ;
            ImageSize size=new ImageSize(100,100);
            ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder3.image1,size);

        }




        return view;
    }
    class ViewHolder3{
        TextView tv;
        ImageView image1;
    }
    class ViewHolder2{
        TextView tv;
        ImageView image1;
        ImageView image2;
    }
    class ViewHolder1{
        TextView tv;
        ImageView image1;
        ImageView image2;
        ImageView image3;


    }
}

//子布局多条目的布局(item1,item2,item3)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tv"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/image1"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/image2"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/image3"/>
</LinearLayout>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/image1"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/image2"/>
        </LinearLayout>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/image1"/>

</LinearLayout>

//加载图片的类

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;



public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration  configuration=new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader.getInstance().init(configuration);
    }
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值