package com.example.com.liuben20170108; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import com.google.gson.Gson; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { String pathone="http://120.27.23.105/product/getCatagory"; private ListView lvone; private ListView lvtwo; private String string; private List<Beanone.DataBean> listone; private String ccid; private String pathtwo; private String s; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 lvone = findViewById(R.id.lvone); lvtwo = findViewById(R.id.lvtwo); //侧滑菜单展示 getcehuo getcehuo = new getcehuo(); getcehuo.execute(); //主菜单显示 lvone.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { ccid = listone.get(i).getCid()+""; pathtwo = "http://120.27.23.105/product/getProductCatagory?cid="+ ccid; getzhu getzhu = new getzhu(); getzhu.execute(); } }); } //侧滑菜单展示 class getcehuo extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { try { URL url=new URL(pathone); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); if(urlConnection.getResponseCode()==200){ InputStream inputStream = urlConnection.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] b=new byte[1024]; int len=-1; while((len=inputStream.read(b))!=-1){ outputStream.write(b,0,len); } string = outputStream.toString(); } } catch (Exception e) { e.printStackTrace(); } return string; } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); Beanone beanone = gson.fromJson(s, Beanone.class); listone = beanone.getData(); Myabapter myabapter = new Myabapter(listone, MainActivity.this); lvone.setAdapter(myabapter); } } //主菜单显示 class getzhu extends AsyncTask<String ,Void,String >{ @Override protected String doInBackground(String... strings) { try { URL url=new URL(pathtwo); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); if(urlConnection.getResponseCode()==200){ InputStream inputStream = urlConnection.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] b=new byte[1024]; int len=-1; while((len=inputStream.read(b))!=-1){ outputStream.write(b,0,len); } s = outputStream.toString(); } } catch (Exception e) { e.printStackTrace(); } return s; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); Beantwo beantwo = gson.fromJson(s, Beantwo.class); List<Beantwo.DataBean> data = beantwo.getData(); List<List<Beantwo.DataBean.ListBean>> list=new ArrayList<>(); for(int i=0;i<data.size();i++) { List<Beantwo.DataBean.ListBean> list1 = data.get(i).getList(); list.add(list1); } MyAdapterone myAdapter = new MyAdapterone(MainActivity.this, list); lvtwo.setAdapter(myAdapter); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } } }
import android.content.Context; import android.graphics.Bitmap; import android.os.Environment; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import java.io.File; import java.util.List; /** * Created by 丶未央 on 2018/1/8. */ class Myabapter extends BaseAdapter{ List<Beanone.DataBean> listone; Context context; private final DisplayImageOptions options; public Myabapter(List<Beanone.DataBean> listone, Context context) { this.listone=listone; this.context=context; //1.初使化--进行一下全局配置 Application File cachefile= new File(Environment.getExternalStorageDirectory().getPath()+"/images"); ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(400, 700)//缓存图片最大的长和宽 .threadPoolSize(3)//线程池的数量 .threadPriority(4) .memoryCacheSize(20*1024*1024)//设置内存缓存区大小 .diskCacheSize(80*1024*1024)//设置sd卡缓存区大小 .diskCache(new UnlimitedDiscCache(cachefile))//自定义sd卡缓存目录 .writeDebugLogs()//打印日志内容 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理 .build(); ImageLoader.getInstance().init(configuration); //2.创建displayImageoptions类 //使用内存缓存 //使用磁盘缓存 //设置正在下载的图片 //url为空或请求的资源不存在时 //下载失败时显示的图片 //设置图片色彩模式 1px=2字节 //设置图片的缩放模式 //设置圆角 30代表半径 自定义 options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时 .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2字节 .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式 .displayer(new RoundedBitmapDisplayer(100))//设置圆角 30代表半径 自定义 .build(); } @Override public int getCount() { return listone.size(); } @Override public Object getItem(int i) { return listone.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { Holderone holderone; if(view==null){ view=View.inflate(context,R.layout.one,null); holderone = new Holderone(); holderone.imageone=view.findViewById(R.id.imageone); holderone.textone=view.findViewById(R.id.textone); view.setTag(holderone); }else{ holderone= (Holderone) view.getTag(); } holderone.textone.setText(listone.get(i).getName()); //3.图片加载 ImageLoader.getInstance().displayImage(listone.get(i).getIcon(),holderone.imageone, options); return view; } class Holderone{ ImageView imageone; TextView textone; } }
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 java.util.List; /** * Created by 丶未央 on 2018/1/8. */ class MyAdapterone extends BaseAdapter{ Context context; List<List<Beantwo.DataBean.ListBean>> list; public MyAdapterone(Context context, List<List<Beantwo.DataBean.ListBean>> list) { this.context=context; this.list=list; } @Override public int getCount() {return list.size(); } @Override public Object getItem(int i) { return list.get(i).get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { Holdertwo holdertwo; if(view==null){ view=View.inflate(context,R.layout.two,null); holdertwo = new Holdertwo(); holdertwo.imagetwo=view.findViewById(R.id.imagetwo); holdertwo.textname=view.findViewById(R.id.textname); view.setTag(holdertwo); }else{ holdertwo= (Holdertwo) view.getTag(); } holdertwo.textname.setText(list.get(i).get(i).getName()); holdertwo.imagetwo.setImageResource(R.drawable.ic_launcher_background); return view; } class Holdertwo{ ImageView imagetwo; TextView textname; } }