2 qq 20240417 qq_20240417 于 2014.11.12 00:02 提问

对于这段图灵机器人调用代码,我不太理解,可以帮帮我么?

主类
enter code here
package zlexample.tuling;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity implements HttpGetDataListener {

private HttpData data;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    data=(HttpData) new HttpData("http://www.tuling123.com/openapi/api?key=cc1dc647bdf0dc4bc7af64edbbda8346&info=+北京", this).execute();
}

@Override
public void getDataUrl(String data) {
    // TODO Auto-generated method stub
    System.out.println(data);   //这里的data和上面new的data一样么(我感觉不一样的,因为httpData类中的listener的调用,给data赋值了么???)?????还有着这里重写这个方法干什么的??
    //莫非是因为定义了接口就必须重写这个方法??接口实际的作用只是限制了data的数据类型??
}

}
另一个类httpData

public class HttpData extends AsyncTask{

private HttpClient httpClient;
private HttpGet httpGet;
private String url;
private HttpResponse httpResponse;
private HttpEntity httpEntity;
private InputStream in;
private HttpGetDataListener listener;
public HttpData(String url,HttpGetDataListener listener) {
    // TODO Auto-generated constructor stub
    this.url=url;
    this.listener=listener;
}
@Override
protected String doInBackground(String... arg0) {
    // TODO Auto-generated method stub
    httpClient=new DefaultHttpClient();
    httpGet=new HttpGet(url);
    try {
        httpResponse=httpClient.execute(httpGet);
        httpEntity=httpResponse.getEntity();
        in=httpEntity.getContent();
        BufferedReader buReader=new BufferedReader(new InputStreamReader(in));
        String line=null;
        StringBuffer stringBuffer = new StringBuffer();
        while ((line=buReader.readLine())!=null) {
            stringBuffer.append(line);
        }
        return stringBuffer.toString();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return null;
}
@Override
protected void onPostExecute(String result) {
    // TODO Auto-generated method stub
    listener.getDataUrl(result);
    super.onPostExecute(result);

}

}
定义的一个接口
package zlexample.tuling;

public interface HttpGetDataListener {
void getDataUrl(String data);
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!