xlistview

//下载源码网址

https://github.com/Maxwin-z/XListView-Android

Main类

package com.example.asus.xlistview;

import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import Bean.News;
import Bean.Shiti;
import view.XListView;

public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{

    private myLv ad;
    private XListView lv;
    private int start=0;
    private String url="http://v.juhe.cn/toutiao/index?type=top&&key=22a108244dbb8d1f49967cd74a0c144d";
    private List<Shiti> list=new ArrayList<>();
    private List<Shiti> list1=new ArrayList<>();
   private Handler handler=new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
        new myAsynctask().execute(url);

    }

    private void initview() {
        lv = (XListView) findViewById(R.id.lv);
        lv.setXListViewListener(this);
        lv.setPullLoadEnable(true);
        list = new ArrayList<>();
    }

    @Override
    public void onRefresh() {

        handler .postDelayed(new Runnable() {

            @Override
            public void run() {
                start+=5;
                list.clear();
                list = inititm(list1);
                ad=new myLv();
                lv.setAdapter(ad);
                onload();
            }
        }, 2000);
    }

    private void onload() {
            lv.stopRefresh();
            lv.stopLoadMore();
            lv.setRefreshTime("刚刚");
    };

    @Override
    public void onLoadMore() {
        handler .postDelayed(new Runnable() {

            @Override
            public void run() {
                list = inititm(list1);
                ad.notifyDataSetChanged();
                onload();
            }
        }, 2000);
    }

    class myAsynctask extends AsyncTask<String,Void,String>{
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            System.out.println("s==="+s);
            Gson gson=new Gson();
            News news = gson.fromJson(s, News.class);
            News.A result = news.result;
            List<News.B> data = result.data;
            for (int i = 0; i <data.size() ; i++) {
                News.B b = data.get(i);
                Shiti shiti=new Shiti();
                shiti.title=b.title;
                shiti.url=b.url;
                shiti.thumbnail_pic_s=b.thumbnail_pic_s;
                list1.add(shiti);
            }
            if(list1!=null){
                list = inititm(list1);
                ad = new myLv();
                lv.setAdapter(ad);
                lv.stopRefresh();
                lv.stopLoadMore();
            }

        }

        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url=new URL(strings[0]);
                HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                connection.connect();
                if(connection.getResponseCode()==200){
                    StringBuffer sb=new StringBuffer();
                    InputStream inputStream = connection.getInputStream();
                    BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
                    String len=null;
                    while ((len=br.readLine())!=null){
                        sb.append(len);
                    }
                    return sb.toString();

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

    private List<Shiti> inititm(List<Shiti> list1) {
        if(start>=list1.size()){
            start=0;
        }
        for (int i = start; i <start+10; i++) {
            list.add(list1.get(i));
        }
        return list;
    }

    class myLv extends BaseAdapter{
        private final int a = 0;//多布局加载第一种布局
        private final int b = 1;//多布局加载第二种布局
        private final int num = 2;//一共两种布
        @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 num;
        }

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            int type = getItemViewType(i);
               viewholder1 holder1=null;
               viewholder2 holder2=null;
            if(view==null){
                switch (type){
                    case a:
                        view=View.inflate(MainActivity.this,R.layout.list_yi,null);
                        holder1=new viewholder1();
                        holder1.tv_title1=view.findViewById(R.id.tv_title1);
                        holder1.img_tu1=view.findViewById(R.id.img_tu1);
                        view.setTag(holder1);
                        break;
                    case b:
                        view=View.inflate(MainActivity.this,R.layout.list_er,null);
                        holder2=new viewholder2();
                        holder2.tv_title2=view.findViewById(R.id.tv_title2);
                        holder2.img_tu2=view.findViewById(R.id.img_tu2);
                        view.setTag(holder2);
                        break;
                }
            }else{
                switch (type){
                    case a:
                        holder1= (viewholder1) view.getTag();
                        break;
                    case b:
                        holder2= (viewholder2) view.getTag();
                        break;
                }
            }
            switch (type){
                case a:
                    holder1.tv_title1.setText(list.get(i).title);
                    ImageLoader.getInstance().displayImage(list.get(i).thumbnail_pic_s,holder1.img_tu1);
                    break;
                case b:
                    holder2.tv_title2.setText(list.get(i).title);
                    ImageLoader.getInstance().displayImage(list.get(i).thumbnail_pic_s,holder2.img_tu2);
                    break;
            }

            return view;
        }
        class  viewholder1 {
            public   TextView tv_title1;
            public ImageView  img_tu1;
        }
        class  viewholder2 {
            public   TextView tv_title2;
            public ImageView  img_tu2;
        }
    }
}
初始化imgagelode

<application
    android:name=".Applica"

package com.example.asus.xlistview;

import android.app.Application;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

/**
 * Created by asus on 2017/8/15.
 */

public class Applica extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        initimageloder();
    }

    private void initimageloder() {
        DisplayImageOptions options=new DisplayImageOptions.Builder().
                displayer(new RoundedBitmapDisplayer(360)).//圆角

  .cacheInMemory(true)
//允许下载的图片缓存到SD卡中
  .cacheOnDisk(true)

                build();
        ImageLoaderConfiguration cofig=new ImageLoaderConfiguration.Builder(this)
                .defaultDisplayImageOptions(options)
                .build();
        ImageLoader.getInstance().init(cofig);
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值