listview多條目並載入圖片
阿新 • • 發佈:2018-11-08
.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));
}
}