//1.获取首接口部分
private void resssd(){ try { URL url=new URL("http://120.27.23.105/product/getCatagory"); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); if (connection.getResponseCode()==200){ InputStream inputStream = connection.getInputStream(); String data = streamToString(inputStream); //进行解析 Gson gson=new Gson(); Data resultData = gson.fromJson(data, Data.class); //2.创建handler对象,发消息给主线程 Message msg=Message.obtain(); msg.obj=resultData; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } }
//每个条目对应的数据的接口
class MyTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { HttpClient httpClient=new DefaultHttpClient(); HttpGet httpGet=new HttpGet(strings[0]); try { HttpResponse response=httpClient.execute(httpGet); if (response.getStatusLine().getStatusCode()==200){ HttpEntity entity=response.getEntity(); String s= EntityUtils.toString(entity); return s; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if (s!=null){ Gson gson=new Gson(); Bean2 bean2 = gson.fromJson(s, Bean2.class); list = bean2.getData(); MyAdapter2 myAdapter=new MyAdapter2(); lw1.setAdapter(myAdapter); } } }//每个接口的适配器//适配器一 class MyAdapter extends BaseAdapter{ @Override public int getCount() { return data1.size(); } @Override public Object getItem(int i) { return data1.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (view==null){ view=View.inflate(MainActivity.this,R.layout.item,null); } TextView tw = view.findViewById(R.id.tw1); tw.setText(data1.get(i).getName()); ImageView iw = view.findViewById(R.id.iw); Myimage m=new Myimage(iw); m.execute(data1.get(i).getIcon()); return view; } class Myimage extends AsyncTask<String, Void, Bitmap> { private ImageView imageView; public Myimage(ImageView imageView){ this.imageView=imageView; } @Override protected Bitmap doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); int code=urlConnection.getResponseCode(); if(code==200){ InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } }catch (Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if (bitmap==null){ imageView.setImageResource(R.mipmap.ic_launcher); }else { imageView.setImageBitmap(bitmap); } } } } //适配器二 class MyAdapter2 extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (view==null){ view=View.inflate(MainActivity.this,R.layout.item2,null); } TextView tw = view.findViewById(R.id.tw2); tw.setText(list.get(i).getName()); ImageView iw = view.findViewById(R.id.iw1); Myimage1 m=new Myimage1(iw); m.execute(list.get(i).getList().get(0).getIcon()); return view; } class Myimage1 extends AsyncTask<String, Void, Bitmap> { private ImageView imageView; public Myimage1(ImageView imageView){ this.imageView=imageView; } @Override protected Bitmap doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); int code=urlConnection.getResponseCode(); if(code==200){ InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } }catch (Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if (bitmap==null){ imageView.setImageResource(R.mipmap.ic_launcher); }else { imageView.setImageBitmap(bitmap); } } } }//调用外部类private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Data data= (Data) msg.obj; data1 = data.getData(); MyAdapter adapter=new MyAdapter(); lw.setAdapter(adapter); } }; private DrawerLayout drawerLayout; private LinearLayout linmenu; private ListView lw; private List<Data.DataBean> data1; private ListView lw1; private List<Bean2.DataBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = findViewById(R.id.mydrawer); linmenu = findViewById(R.id.lin_menu); lw = findViewById(R.id.lw); Button open = findViewById(R.id.btn_open); open.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawerLayout.openDrawer(linmenu); } }); new Thread(){ @Override public void run() { super.run(); resssd(); } }.start(); lw1 = findViewById(R.id.lw1); lw.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { int cid = data1.get(i).getCid(); //Toast.makeText(MainActivity.this,"111",Toast.LENGTH_SHORT).show(); MyTask myTask=new MyTask(); myTask.execute("http://120.27.23.105/product/getProductCatagory?cid="+cid); } }); }我的第一个接口使用线程用Handel获取的,所以有些繁琐,记住想用第二个接口得到第一个接口传输的数据必须获得第一个接口传过来的ID:( int cid = data1 .get(i).getCid(); )