.MainActivity
package com.example.doublelist;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import com.example.xxx.me.maxwin.view.XListView;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
public class MainActivity extends AppCompatActivity {
private XListView xlv;
private ArrayList<News.DataBean> list;
private MAdapter ma;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv = findViewById(R.id.xlv);
list = new ArrayList<>();
ma = new MAdapter(MainActivity.this,list);
xlv.setAdapter(ma);
new Thread(){
@Override
public void run() {
super.run();
try {
URL url = new URL("http://www.xieast.com/api/news/news.php?page=2");
HttpURLConnection httpurlConnection = (HttpURLConnection) url.openConnection();
httpurlConnection.setRequestMethod("GET");
httpurlConnection.setConnectTimeout(5000);
httpurlConnection.setReadTimeout(5000);
if (httpurlConnection.getResponseCode()==200){
InputStream inputStream = httpurlConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
String s = CharStreams.toString(inputStreamReader);
Gson gson = new Gson();
News news = gson.fromJson(s, News.class);
handler.sendMessage(handler.obtainMessage(0,news.getData()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
list.addAll((Collection<? extends News.DataBean>) msg.obj);
ma.notifyDataSetChanged();
}
};
}
}
.MAdapter
package com.example.doublelist;
import android.util.Log;
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 java.util.ArrayList;
class MAdapter extends BaseAdapter {
private MainActivity mainActivity;
private ArrayList<News.DataBean> list;
public MAdapter(MainActivity mainActivity, ArrayList<News.DataBean> list) {
this.mainActivity = mainActivity;
this.list = list;
}
@Override
public int getItemViewType(int position) {
if (position%2==0){
return super.getItemViewType(position);
}else{
return 1;
}
}
@Override
public int getViewTypeCount() {
return super.getViewTypeCount()+1;
}
@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 View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if (convertView==null){
vh = new ViewHolder();
convertView = View.inflate(mainActivity,getItemViewType(position)==0?R.layout.lv_item1:R.layout.lv_item2,null);
vh.title = convertView.findViewById(R.id.title);
vh.date = convertView.findViewById(R.id.date);
vh.iv = convertView.findViewById(R.id.iv);
vh.iv1 = convertView.findViewById(R.id.iv1);
vh.iv2 = convertView.findViewById(R.id.iv2);
vh.iv3 = convertView.findViewById(R.id.iv3);
convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
}
News.DataBean dataBean = list.get(position);
vh.title.setText(dataBean.getTitle());
vh.date.setText(dataBean.getDate());
if (getItemViewType(position)==0){
ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s(),vh.iv,ImageLoaderconfigs.getops(mainActivity));
}else{
ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s(),vh.iv1,ImageLoaderconfigs.getops(mainActivity));
ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s02(),vh.iv2,ImageLoaderconfigs.getops(mainActivity));
ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s03(),vh.iv3,ImageLoaderconfigs.getops(mainActivity));
}
return convertView;
}
class ViewHolder{
TextView title;
TextView date;
ImageView iv,iv1,iv2,iv3;
}
}
.ImageLoaderconfigs
package com.example.doublelist;
import android.content.Context;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
class ImageLoaderconfigs {
public static ImageLoaderConfiguration getcon(Context context){
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context)
.memoryCacheSizePercentage(10)
.diskCacheSize(50*1024*1024)
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.writeDebugLogs()
.build();
return configuration;
}
public static DisplayImageOptions getops(Context context){
DisplayImageOptions options=new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.showImageOnLoading(R.mipmap.ic_launcher)
.showImageOnFail(R.drawable.ic_launcher_background)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.build();
return options;
}
}
.App
package com.example.doublelist;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoader.getInstance().init(ImageLoaderconfigs.getcon(this));
}
}