上拉加载下拉刷新 多条目展示
///////////////////////////////////创建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);
}
}
///////////////////////////////////////////////////主布局///////////////////////////////////////////////////
<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布局///////////////////////////////////////////////////
<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布局///////////////////////////////////////////////////
<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>