1. 程式人生 > >多個數據請求巢狀

多個數據請求巢狀

//公用的網路請求工具類

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>