//公用的网络请求工具类
package bawei.com.Test; import android.os.Message; import android.support.v7.app.AppCompatActivity; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Created by asus on 2017/6/9. */ public abstract class BaseActivity extends AppCompatActivity{ private android.os.Handler handler = new android.os.Handler(){ public void handleMessage(Message msg){ handlerMsg(msg); } }; public abstract void handlerMsg(Message msg); public void loadData(String UrlPath){ try { URL url = new URL(UrlPath); HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); urlConnection.connect(); if(urlConnection.getResponseCode() == 200){ InputStream in = urlConnection.getInputStream(); byte[] buff = new byte[1024]; int len = -1; StringBuffer sb = new StringBuffer(); while ((len = in.read(buff)) != -1){ sb.append(new String(buff,0,len,"UTF-8")); } Message msg = Message.obtain(); msg.what = 1; msg.obj = sb.toString(); handler.sendMessage(msg); } urlConnection.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }
//第一次请求
package bawei.com.Test; import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; import bawei.com.Test.been.ClassifyData; public class MainActivity extends BaseActivity { private ListView lv; private List<String> listTitle; private List<ClassifyData.TngouBean> list; private final String urlPath = "http://www.tngou.net/api/cook/classify"; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView)findViewById(R.id.listview); listTitle = new ArrayList<String>(); adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_expandable_list_item_1,listTitle); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ClassifyData.TngouBean bean = list.get(position); int classId = bean.getId(); Intent intent = new Intent(MainActivity.this,Two_Activity.class); intent.putExtra("id",classId); startActivity(intent); } }); new Thread(){ @Override public void run() { loadData(urlPath); } }.start(); } @Override public void handlerMsg(Message msg) { Gson gson = new Gson(); ClassifyData data = gson.fromJson(msg.obj.toString(),ClassifyData.class); list = data.getTngou(); for (ClassifyData.TngouBean bean : list){ listTitle.add(bean.getTitle()); } adapter.notifyDataSetChanged(); } }
//第二次请求
package bawei.com.Test; import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; import bawei.com.Test.been.Two_been; public class Two_Activity extends BaseActivity { private int id; private String urlPath = "http://www.tngou.net/api/cook/list?rows=30&id="; private List<Two_been.TngouBean> list; private MyAdapter adapter; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two_); lv = (ListView)findViewById(R.id.two_listview); Intent intent = getIntent(); id = intent.getIntExtra("id",0); list = new ArrayList<>(); adapter = new MyAdapter(); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Two_been.TngouBean bean = list.get(position); int classId = bean.getId(); Intent intent1 = new Intent(Two_Activity.this,Show_Activity.class); intent1.putExtra("id",classId); startActivity(intent1); } }); new Thread(){ @Override public void run() { loadData(urlPath+id); } }.start(); } @Override public void handlerMsg(Message msg) { Gson gson = new Gson(); Two_been been = gson.fromJson(msg.obj.toString(),Two_been.class); list.addAll(been.getTngou()); adapter.notifyDataSetChanged(); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null) { convertView = View.inflate(Two_Activity.this,R.layout.two_listview,null); holder = new ViewHolder(); holder.title2 = (TextView)convertView.findViewById(R.id.title2); holder.food2 = (TextView)convertView.findViewById(R.id.food2); holder.image2 = (ImageView)convertView.findViewById(R.id.image2); convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag(); } Two_been.TngouBean bean = list.get(position); holder.title2.setText(bean.getName()); holder.food2.setText(bean.getFood()); Glide.with(Two_Activity.this).load("http://tnfs.tngou.net/image"+bean.getImg()).into(holder.image2); return convertView; } class ViewHolder{ TextView title2,food2; ImageView image2; } } }//第三次用网页进行展示
package bawei.com.Test; import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.webkit.WebView; import org.json.JSONException; import org.json.JSONObject; /** * Created by asus on 2017/6/11. */ public class Show_Activity extends BaseActivity{ private WebView webView; private final String urlPath = "http://www.tngou.net/api/cook/show?id="; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.show_xml); webView = (WebView)findViewById(R.id.webview); Intent intent = getIntent(); final int id = intent.getIntExtra("id",0); new Thread(){ @Override public void run() { loadData(urlPath+id); } }.start(); } @Override public void handlerMsg(Message msg) { try { JSONObject json = new JSONObject(msg.obj.toString()); String url = json.getString("url"); webView.loadUrl(url); } catch (JSONException e) { e.printStackTrace(); } } }
//注意:
切记一定要进行网络请求权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>