上拉,下拉,图片

1.MainActivity

package com.example.lianxi_02;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.lianxi_02.adapter.MyAdapter;
import com.example.lianxi_02.beans.Beans;
import com.example.lianxi_02.utils.HttpUtils;
import com.example.lianxi_02.view.XListView;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private HttpUtils httpUtils;
    private String path = "https://www.apiopen.top/satinApi?type=&page=";
    private int page = 1;
    private int type = 41;
    private XListView xListView;
    private List<Beans.DataBean> list = new ArrayList<>();
    private MyAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //zujian
        initsetview();

        //
        getdataFromNetWork();

    }

    private void initsetview() {
        xListView = findViewById(R.id.xlistview);

        xListView.setPullLoadEnable(true);

        xListView.setPullRefreshEnable(true);

        xListView.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                    page = 1;
                    type = 41;
                    getdataFromNetWork();
            }

            @Override
            public void onLoadMore() {
                page++;
                type++;
                getdataFromNetWork();
            }
        });
        adapter = new MyAdapter(list,MainActivity.this);
        xListView.setAdapter(adapter);


    }

    public void getdataFromNetWork() {

        String url = path+type+page;


        httpUtils = HttpUtils.getInsetance();
        httpUtils.getdata(url);
        httpUtils.setHttpListence(new HttpUtils.HttpListence() {
            @Override
            public void getjsondata(String json) {
                Gson gson = new Gson();

                Beans beans = gson.fromJson(json, Beans.class);

                List<Beans.DataBean> list1 = beans.getData();

                if (page == 1 && type ==41){
                    list.clear();
                }
                list.addAll(list1);
                adapter.notifyDataSetChanged();

                if (page == 1 && type == 41){
                    xListView.stopRefresh();
                }else {
                    xListView.stopLoadMore();
                }
            }
        });


    }
}

2.到一个view文件

3.创建工具类

package com.example.lianxi_02.utils;

import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class HttpUtils {
    private static HttpUtils httpUtils;
    private HttpListence httpListence;


   public static HttpUtils getInsetance() {
        if (httpUtils == null){
            httpUtils = new HttpUtils();
        }
        return httpUtils;
    }

    public void  getdata(String url){
       MyAsyncTask myAsyncTask = new MyAsyncTask();
        myAsyncTask.execute(url);
    }

     class MyAsyncTask extends AsyncTask<String,Void,String>{
       String json = "";
         @Override
         protected String doInBackground(String... params) {
             try {
                 URL url = new URL(params[0]);

                 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

                 urlConnection.setRequestMethod("GET");

                 if (urlConnection.getResponseCode() == 200){
                     InputStream inputStream = urlConnection.getInputStream();
                    json= StreamToString(inputStream);
                 }


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

         @Override
         protected void onPostExecute(String s) {
             super.onPostExecute(s);
             httpListence.getjsondata(s);
         }
     }

    private String StreamToString(InputStream inputStream) throws IOException {
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader reader = new BufferedReader(inputStreamReader);

        String s = null;

        StringBuilder builder = new StringBuilder();

        while ((s = reader.readLine())!=null){
                builder.append(s);
        }

        reader.close();

        return builder.toString();

    }

    public interface HttpListence {
      void getjsondata(String json);
    }

    public void setHttpListence(HttpListence httpListence) {
        this.httpListence = httpListence;
    }
}

创建一个MyApp

package com.example.lianxi_02.utils;

import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Handler;

import com.example.lianxi_02.R;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.nostra13.universalimageloader.utils.StorageUtils;

import java.io.File;

public class MyApp extends Application{
    private Context context ;


    @Override
    public void onCreate() {
        super.onCreate();
        context = this;
        intImageLoader();
    }

    private void intImageLoader() {
        File cacheDir = StorageUtils.getCacheDirectory(context);  //缓存文件夹路径
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽
                .diskCacheExtraOptions(480, 800, null)  // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个

        .threadPoolSize(3) // default  线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值
                .memoryCacheSizePercentage(13) // default

                .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
                .diskCacheFileCount(100)  // 可以缓存的文件数量
                // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .writeDebugLogs() // 打印debug log
                .build(); //开始构建
        ImageLoader.getInstance().init(config);
    }

  public static    DisplayImageOptions getOptions(){
      DisplayImageOptions options = new DisplayImageOptions.Builder()
              .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片
              .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
              .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
              .resetViewBeforeLoading(false)  // default 设置图片在加载前是否重置、复位
              .delayBeforeLoading(1000)  // 下载前的延迟时间
              .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
              .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中

                .considerExifParams(false) // default
              .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
              .bitmapConfig(Bitmap.Config.ARGB_8888) // default 设置图片的解码类型

        .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)
              .handler(new Handler()) // default
              .build();
      return options;
  };
}

创建一个Bean

创建一个Mybase

package com.example.lianxi_02.adapter;

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.example.lianxi_02.R;
import com.example.lianxi_02.beans.Beans;
import com.example.lianxi_02.utils.MyApp;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

public class MyAdapter extends BaseAdapter{
    private List<Beans.DataBean> list;
    private Context context;


    private  final int ONE_ITEM = 0;
    private  final int TWO_ITEM = 1;
    private  final int THREE_ITEM = 2;



    public MyAdapter(List<Beans.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
        String profile_image = list.get(position).getProfile_image();
        String bimageuri = list.get(position).getBimageuri();
        String image1 = list.get(position).getImage1();

        if (profile_image !=null && bimageuri == null && image1 == null){
            return ONE_ITEM;
        }else if (profile_image !=null && bimageuri != null && image1 == null){
            return TWO_ITEM;
        }else if (profile_image !=null && bimageuri != null && image1 != null){
            return THREE_ITEM;
        }else {
            return ONE_ITEM;
        }


    }

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

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int itemViewType = getItemViewType(position);
        if (itemViewType == ONE_ITEM){
            OneViewHolder oneViewHolder ;

            if (convertView==null){
                oneViewHolder = new OneViewHolder();
                convertView = View.inflate(context,R.layout.item01_listview,null);
                oneViewHolder.item01_profile_image = convertView.findViewById(R.id.item01_url);
                oneViewHolder.text01 = convertView.findViewById(R.id.title01);

                convertView.setTag(oneViewHolder);
            }else {
                oneViewHolder = (OneViewHolder) convertView.getTag();
            }
            ImageLoader.getInstance().displayImage(list.get(position).getProfile_image(),oneViewHolder.item01_profile_image, MyApp.getOptions());
            oneViewHolder.text01.setText(list.get(position).getText());

            return convertView;


        }else if(itemViewType == TWO_ITEM){

            TwoViewHolder twoViewHolder;
            if (convertView==null){
                twoViewHolder = new TwoViewHolder();
                convertView = View.inflate(context, R.layout.item02_listview,null);
                twoViewHolder.item02_profile_image = convertView.findViewById(R.id.item02_url);
                twoViewHolder.item02_bimageuri = convertView.findViewById(R.id.item02_img);
                twoViewHolder.text02 = convertView.findViewById(R.id.title02);

                convertView.setTag(twoViewHolder);
            }else {
                twoViewHolder = (TwoViewHolder) convertView.getTag();
            }
            ImageLoader.getInstance().displayImage(list.get(position).getProfile_image(),twoViewHolder.item02_profile_image);
            ImageLoader.getInstance().displayImage(list.get(position).getBimageuri(),twoViewHolder.item02_bimageuri);

            twoViewHolder.text02.setText(list.get(position).getText());

            return convertView;

        }else if (itemViewType == THREE_ITEM){
            ThreeViewHolder threeViewHolder;
            if (convertView==null){
                threeViewHolder = new ThreeViewHolder();
                convertView = View.inflate(context, R.layout.item03_listview,null);
                threeViewHolder.item03_profile_image = convertView.findViewById(R.id.item03_url);
                threeViewHolder.item03_bimageuri = convertView.findViewById(R.id.item03_img);
                threeViewHolder.item03_image1 = convertView.findViewById(R.id.item03_userImg);

                threeViewHolder.text03 = convertView.findViewById(R.id.title03);

                convertView.setTag(threeViewHolder);
            }else {
                threeViewHolder = (ThreeViewHolder) convertView.getTag();
            }
            ImageLoader.getInstance().displayImage(list.get(position).getProfile_image(),threeViewHolder.item03_profile_image, MyApp.getOptions());
            ImageLoader.getInstance().displayImage(list.get(position).getBimageuri(),threeViewHolder.item03_bimageuri);
            ImageLoader.getInstance().displayImage(list.get(position).getImage1(),threeViewHolder.item03_image1, MyApp.getOptions());

            threeViewHolder.text03.setText(list.get(position).getText());

            return convertView;
        }

        return null;
    }


    class OneViewHolder{
        ImageView item01_profile_image;
        TextView text01;
    }

    class TwoViewHolder{
        ImageView item02_profile_image,item02_bimageuri;
        TextView text02;
    }

    class ThreeViewHolder{
        ImageView item03_profile_image,item03_bimageuri,item03_image1;
        TextView text03;
    }
}

猜你喜欢

转载自blog.csdn.net/we1601r/article/details/80726044
今日推荐