2.主类Activity
package com.example.administrator.lianxi;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ExpandableListView;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ExpandableListView lv;
private EditText name;
private String s;
private String path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//二级列表控件
lv = (ExpandableListView) findViewById(R.id.lv);
name = (EditText) findViewById(R.id.name);
}
public void go(View view){
s = name.getText().toString();
AsyncTask<Void,Void,String>asyncTask=new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... voids) {
try {
path = "http://apis.juhe.cn/cook/query?key=b0eeae4ccd73cce88a8d78e60c64d61c&rn=10&pn=3&menu="+ URLEncoder.encode(s,"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode==200){
InputStream inputStream = urlConnection.getInputStream();
String s = convertStreamToString(inputStream);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
Gson gson = new Gson();
Data data = gson.fromJson(s, Data.class);
List<Data.ResultBean.DataBean> data1 = data.getResult().getData();
Log.d("---------------",data.toString()+"----------------------");
MyAdapter myAdapter = new MyAdapter(data1, MainActivity.this);
lv.setAdapter(myAdapter);
}
};
asyncTask.execute();
}
/**
* 将输入流转成字符串
*
* @param is
* 输入流
* @return 返回字符串
*/
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
2.适配器
package com.example.administrator.lianxi;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
/**
* Created by Administrator on 2017/10/11 0011.
*/
public class MyAdapter extends BaseExpandableListAdapter{
List<Data.ResultBean.DataBean> list;
Context con;
public MyAdapter(List<Data.ResultBean.DataBean> list, Context con) {
this.list = list;
this.con = con;
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int i) {
return list.get(i).getSteps().size();
}
@Override
public Object getGroup(int i) {
return list.get(i);
}
@Override
public Object getChild(int i, int i1) {
return list.get(i).getSteps().get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
ViewHolder vh;
if (view==null){
view = View.inflate(con, R.layout.list_child1, null);
vh=new ViewHolder();
vh.textView= (TextView) view.findViewById(R.id.tname);
vh.imageView= (ImageView) view.findViewById(R.id.timg);
view.setTag(vh);
}else{
vh= (ViewHolder) view.getTag();
}
vh.textView.setText(list.get(i).getTitle());
ImageLoader.getInstance().displayImage(list.get(i).getAlbums().get(0),vh.imageView,ImageUrl.getto());
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
ViewHolder1 vh;
if (view==null){
view = View.inflate(con, R.layout.list_child2, null);
vh=new ViewHolder1();
vh.textView= (TextView) view.findViewById(R.id.vname);
vh.imageView= (ImageView) view.findViewById(R.id.vimg);
view.setTag(vh);
}else{
vh= (ViewHolder1) view.getTag();
}
vh.textView.setText(list.get(i).getSteps().get(i).getStep());
ImageLoader.getInstance().displayImage(list.get(i).getSteps().get(i1).getImg(),vh.imageView,ImageUrl.getto());
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
class ViewHolder{
TextView textView;
ImageView imageView;
}
class ViewHolder1{
TextView textView;
ImageView imageView;
}
}