上拉加载下拉刷新 多条目展示

///////////////////////////////////创建5.0///////////////////////////////////
在这里插入图片描述
///////////////////////////////////导入XListView Module///////////////////////////////////
在这里插入图片描述

在这里插入图片描述
///////////////////////////////////关联///////////////////////////////////
在这里插入图片描述

///////////////////////////////////AndroidManifest.xml///////////////////////////////////
在这里插入图片描述
package com.list.zx_twok;
import android.os.AsyncTask;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.list.adapter.MyAdapter;
import com.list.bean.Json;
import com.google.gson.Gson;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import me.maxwin.view.XListView;

public class MainActivity extends AppCompatActivity {
private XListView xListView1;
private Handler handler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    xListView1 = findViewById(R.id.xListView1);
    //头脚
    xListView1.setPullLoadEnable(true);//上拉加载
    xListView1.setPullRefreshEnable(true);//下拉刷新
    //监听事件
    xListView1.setXListViewListener(new XListView.IXListViewListener() {
        @Override
        public void onRefresh() {//下拉刷新
            //时间
            getTime();
            //网络请求
            getData();
            //刷新时停留两秒钟
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    xListView1.stopRefresh();
                }
            }, 2000);
        }

        @Override
        public void onLoadMore() {//上拉加载
            getData();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    xListView1.stopLoadMore();
                }
            }, 2000);
        }
    });
    //请求网络和解析json串
    getData();
    //获取Android系统时间
    getTime();
    ///当加载的json串允许的情况下可以来回刷新数据添加以下注释的代码可以实现加载不同的数据
   /* xlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //xlistview条目角标从1开始  但是集合的角标是从0开始的
            News.DataBean dataBean = list.get(position - 1);
            Log.i("xxx", "条目:" + position);
        }
    });*/
}

private void getTime() {
    //获取时间
    long time = System.currentTimeMillis();
    Date date = new Date(time);
    //设置时间格式
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String format = simpleDateFormat.format(date);
    xListView1.setRefreshTime(format);
}

private void getData() {
    new MyAsync().execute();
}

//异步请求网络
private class MyAsync extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... strings) {
        try {
            URL url = new URL("http://www.xieast.com/api/news/news.php?page=1");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream stream = conn.getInputStream();
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                //字节
                byte[] buffer = new byte[1024];
                //长度
                int len = 0;
                while ((len = stream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                //关流
                bos.close();
                stream.close();
                //转换
                String json = bos.toString();
                return json;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //json解析
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Gson gson = new Gson();
        Json json = gson.fromJson(s, Json.class);
        List<Json.DataBean> data = json.getData();
        MyAdapter myAdapter = new MyAdapter(MainActivity.this, data);
        xListView1.setAdapter(myAdapter);
    }
}

}

////////////////////////////////////////////////////适配器////////////////////////////////////////////////////
package com.bwie.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.list.bean.Json;
import com.list.zx_twok.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

public class MyAdapter extends BaseAdapter {
//定义
private final static int TYPE_ONE = 0;
private final static int TYPE_TWO = 1;
private final static int TYPE_THREE = 2;

private Context context;
private List<Json.DataBean> list;

public MyAdapter(Context context, List<Json.DataBean> 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 int getViewTypeCount() {
    return 3;
}

@Override
public int getItemViewType(int position) {
    if (position % 3 == 0) {
        return TYPE_ONE;
    } else if (position % 3 == 1) {
        return TYPE_TWO;
    } else {
        return TYPE_THREE;
    }
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    ViewHolder2 holder2 = null;
    ViewHolder3 holder3 = null;

    int type = getItemViewType(position);
    if (convertView == null) {
        //json串为三张图片的item1布局
        if (type == TYPE_ONE) {
            convertView = View.inflate(context, R.layout.item1_layout, null);
            holder3 = new ViewHolder3();
            holder3.text3 = convertView.findViewById(R.id.text3);
            holder3.img3 = convertView.findViewById(R.id.img3);
            holder3.img33 = convertView.findViewById(R.id.img33);
            holder3.img333 = convertView.findViewById(R.id.img333);
            convertView.setTag(holder3);
        } else if (type == TYPE_TWO) {
            //两张图片 item2布局
            convertView = View.inflate(context, R.layout.item2_layout, null);
            holder2 = new ViewHolder2();
            holder2.text2 = convertView.findViewById(R.id.text2);
            holder2.img2 = convertView.findViewById(R.id.img2);
            holder2.img22 = convertView.findViewById(R.id.img22);
            convertView.setTag(holder2);
        } else {
            //一张图片 item3布局
            convertView = View.inflate(context, R.layout.item3_layout, null);
            holder = new ViewHolder();
            holder.text1 = convertView.findViewById(R.id.text1);
            holder.img1 = convertView.findViewById(R.id.img1);
            convertView.setTag(holder);
        }
    } else {
        if (type == TYPE_ONE) {
            holder3 = (ViewHolder3) convertView.getTag();
        } else if (type == TYPE_TWO) {
            holder2 = (ViewHolder2) convertView.getTag();
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
    }
    if (type == TYPE_ONE){
        holder3.text3.setText(list.get(position).getTitle());
        ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder3.img3);
        ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder3.img33);
        ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder3.img333);
    }else if (type == TYPE_TWO){
        holder2.text2.setText(list.get(position).getTitle());
        ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder2.img2);
        ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder2.img22);
    }else {
        holder.text1.setText(list.get(position).getTitle());
        ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.img1);
    }
    return convertView;
}

class ViewHolder {
    private ImageView img1;
    private TextView text1;
}

class ViewHolder2 {
    private ImageView img2;
    private ImageView img22;
    private TextView text2;
}

class ViewHolder3 {
    private ImageView img3;
    private ImageView img33;
    private ImageView img333;
    private TextView text3;
}

}
///////////////////////////////////////////////////Image_loader///////////////////////////////////////////
package com.list.image;

import android.app.Application;

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

public class Image extends Application {
@Override
public void onCreate() {
super.onCreate();
//依赖
//全局变量
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this)

            .build();
    //初始化
    ImageLoader.getInstance().init(imageLoaderConfiguration);
}

}
///////////////////////////////////////////////////主布局///////////////////////////////////////////////////

<?xml version="1.0" encoding="utf-8"?>

<me.maxwin.view.XListView
    android:id="@+id/xListView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</me.maxwin.view.XListView>
///////////////////////////////////////////////////itme1布局/////////////////////////////////////////////////// <?xml version="1.0" encoding="utf-8"?>

</android.support.constraint.ConstraintLayout>
///////////////////////////////////////////////////itme2布局///////////////////////////////////////////////////

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout
xmlns:android=“http://schemas.android.com/apk/res/android” android:layout_width=“match_parent”
android:layout_height=“match_parent”>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_height="wrap_content"
        android:text="abc" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        >

        <ImageView
            android:id="@+id/img2"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/img22"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_weight="1"
            android:src="@mipmap/ic_launcher" />


    </LinearLayout>

</LinearLayout>

</android.support.constraint.ConstraintLayout>
///////////////////////////////////////////////////itme3布局///////////////////////////////////////////////////

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android
android:layout_width=“match_parent”
android:layout_height=“match_parent”>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="qwe" />

    <ImageView
        android:id="@+id/img1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher" />
</LinearLayout>

</android.support.constraint.ConstraintLayout>

猜你喜欢

转载自blog.csdn.net/yinqiuping/article/details/85949582