多个数据请求嵌套

来源:互联网 发布:保健品可以网络销售 编辑:程序博客网 时间:2024/06/05 17:08

//公用的网络请求工具类

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>



原创粉丝点击