public class MainActivity extends Activity implements XListView.IXListViewListener{ private XListView mylist; private List<Bean.ResultBean.BookListBean> list=new ArrayList<>(); private Mybase adapter; private List<String> tu=new ArrayList<String>(); private int limit=3; int skip=0; private Banner banner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mylist=findViewById(R.id.mylist); mylist.setXListViewListener(this); mylist.setPullLoadEnable(true); mylist.setPullRefreshEnable(true); banner=findViewById(R.id.banner); tu.add("http://preview.quanjing.com/pm0053/pm0053-2183et.jpg"); tu.add("http://preview.quanjing.com/pm0053/pm0053-2310jo.jpg"); tu.add("http://preview.quanjing.com/pm0053/pm0053-2345os.jpg"); tu.add("http://preview.quanjing.com/pm0053/pm0053-4588pu.jpg"); banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR); banner.setDelayTime(2000); banner.setImages(tu); banner.setImageLoader(new init()); banner.start(); getData("http://japi.juhe.cn/comic/book"); adapter=new Mybase(MainActivity.this,list); mylist.setAdapter(adapter); } public class init extends ImageLoader implements ImageLoaderInterface { @Override public void displayImage(Context context, Object path, View imageView) { Glide.with(context).load(path).into((ImageView) imageView); } @Override public View createImageView(Context context) { return null; } } private void getData(String path) { new AsyncTask<String, Void, String>() { @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); Bean bean=gson.fromJson(s,Bean.class); if (bean!=null&&bean.getResult()!=null){ list=bean.getResult().getBookList(); } if (list!=null&&list.size()>0){ if (skip>1){ adapter.adddata(list); }else { adapter.updata(list); } mylist.stopLoadMore(); mylist.stopRefresh(); } } @Override protected String doInBackground(String... strings) { String path=strings[0]; try { URL url=new URL(path); HttpURLConnection con= (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); OutputStream os=con.getOutputStream(); os.write(("key=bb260d976d122953fb8fae13e40420c7&skip="+skip).getBytes()); os.flush(); con.setConnectTimeout(3000); con.setReadTimeout(3000); int code=con.getResponseCode(); if (code==200){ InputStream is=con.getInputStream(); String json=work(is); System.out.println(json); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path); } private String work(InputStream is) throws IOException { ByteArrayOutputStream baos=new ByteArrayOutputStream(); byte []buffer=new byte[1024]; int len=0; while ((len=is.read(buffer))!=-1){ baos.write(buffer,0,len); } is.close(); baos.flush(); baos.close(); return baos.toString(); } @Override public void onRefresh() { skip=1; getData("http://japi.juhe.cn/comic/book"); } @Override public void onLoadMore() { skip+=limit; getData("http://japi.juhe.cn/comic/book"); } }
//优化多条目展示
public class Mybase extends BaseAdapter { private Context context; private DisplayImageOptions opt; private List<Bean.ResultBean.BookListBean> list=new ArrayList<>(); public Mybase(Context context,List<Bean.ResultBean.BookListBean> list) { this.context = context; this.list=list; ImageLoaderConfiguration conf=new ImageLoaderConfiguration.Builder(context).build(); ImageLoader.getInstance().init(conf); opt=new DisplayImageOptions.Builder().showImageOnFail(R.mipmap.ic_launcher).displayer(new CircleBitmapDisplayer()).cacheOnDisk(true).cacheInMemory(true).build(); } public void adddata(List<Bean.ResultBean.BookListBean>list){ this.list.addAll(list); notifyDataSetChanged(); } public void updata(List<Bean.ResultBean.BookListBean>list){ this.list.clear(); adddata(list); } @Override public int getItemViewType(int position) { if (position%3==0){ return 0; }else if(position%3==1){ return 1; }else if (position%3==2){ return 2; } return 3; } @Override public int getViewTypeCount() { return 3; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type=getItemViewType(i); switch (type){ case 0: viewholder holder; if (view==null){ holder=new viewholder(); view=View.inflate(context,R.layout.item,null); holder.te=view.findViewById(R.id.textView); holder.image=view.findViewById(R.id.imageView); view.setTag(holder); }else{ holder= (viewholder) view.getTag(); } holder.te.setText(list.get(i).getName()); ImageLoader.getInstance().displayImage(list.get(i).getCoverImg(),holder.image,opt); System.out.println(list.get(i).getCoverImg()); break; case 1: viewholder2 holder2; if (view==null){ holder2=new viewholder2(); view=View.inflate(context,R.layout.item2,null); holder2.te2=view.findViewById(R.id.textView2); holder2.image2=view.findViewById(R.id.imageView2); view.setTag(holder2); }else{ holder2= (viewholder2) view.getTag(); } holder2.te2.setText(list.get(i).getName()); ImageLoader.getInstance().displayImage(list.get(i).getCoverImg(),holder2.image2,opt); System.out.println(list.get(i).getCoverImg()); break; case 2: viewholder3 holder3; if (view==null){ holder3=new viewholder3(); view=View.inflate(context,R.layout.item3,null); holder3.te3=view.findViewById(R.id.textView3); holder3.image3=view.findViewById(R.id.imageView3); view.setTag(holder3); }else{ holder3= (viewholder3) view.getTag(); } holder3.te3.setText(list.get(i).getName()); ImageLoader.getInstance().displayImage(list.get(i).getCoverImg(),holder3.image3,opt); System.out.println(list.get(i).getCoverImg()); break; } return view; }class viewholder{ TextView te; ImageView image; } class viewholder2{ TextView te2; ImageView image2; } class viewholder3{ TextView te3; ImageView image3; } }