2016-05-04 25 views
0

所以我試圖在一個Activity中實現兩個API,並在同一Activity中同時顯示我的第二個API的listview和webview。我設法得到了列表視圖。這就是我想要通話雙方通過的onClick方法同時運行的API在MainActivity的一部分如何在一個Activity中顯示listview和webview?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.twit_list); 
    activity = this; 

    Key = getStringFromManifest("CONSUMER_KEY"); 
    Secret = getStringFromManifest("CONSUMER_SECRET"); 

    txtSearch = (EditText) findViewById(R.id.txtSearch); 
    searchbtn = (Button) findViewById(R.id.searchbtn); 
    save = (Button) findViewById(R.id.save); 
    savedSearches = (Button)findViewById(R.id.savedSearches); 

    searchbtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
    public void onClick(View view){ 

      downloadSearches(); 
      new GoogleSearch(); 


     } 
    }); 
    save.setOnClickListener(new Button.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      saveSearch(); 

     } 
    }); 

    savedSearches.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
    public void onClick(View v){ 
      openSavedSearches(); 
     } 
    }); 

} 

這是阿比的GoogleSearch公共 無效的onCreate(捆綁savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.twit_list);

txtSearch = (EditText)webView.findViewById(R.id.txtSearch); 
    searchbtn = (Button) webView.findViewById(R.id.searchbtn); 
    webView = (WebView)webView.findViewById(R.id.webView); 

    searchbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String item = txtSearch.getText().toString(); 
      new JsonSearchTask(item).execute(); 
     } 
    }); 
} 

    private class JsonSearchTask extends AsyncTask<Void, Void, Void> { 

     String searchResult = ""; 
     String search_url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="; 
     String search_query; 

     JsonSearchTask(String item){ 

      try { 
       search_item = URLEncoder.encode(item, "utf-8"); 
      } catch (UnsupportedEncodingException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      search_query = search_url + search_item; 
     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 

      try { 
       searchResult = ParseResult(sendQuery(search_query)); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPreExecute() { 

      searchbtn.setEnabled(false); 
      searchbtn.setText("Wait..."); 
      super.onPreExecute(); 
     } 

     @Override 
     protected void onPostExecute(Void result) { 

      webView.loadData(searchResult, 
        "text/html", 
        "UTF-8"); 

      searchbtn.setEnabled(true); 
      searchbtn.setText("Search"); 

      super.onPostExecute(result); 
     } 

    } 

private String sendQuery(String query) throws IOException{ 
    String result = ""; 

    URL searchURL = new URL(query); 

    HttpURLConnection httpURLConnection = (HttpURLConnection) searchURL.openConnection(); 

    if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK){ 
     InputStreamReader inputStreamReader = new InputStreamReader(httpURLConnection.getInputStream()); 
     BufferedReader bufferedReader = new BufferedReader(
       inputStreamReader, 
       8192); 

     String line = null; 
     while((line = bufferedReader.readLine()) != null){ 
      result += line; 
     } 

     bufferedReader.close(); 
    } 

    return result; 
} 

private String ParseResult(String json) throws JSONException{ 
    String parsedResult = ""; 

    JSONObject jsonObject = new JSONObject(json); 
    JSONObject jsonObject_responseData = jsonObject.getJSONObject("responseData"); 
    JSONArray jsonArray_results = jsonObject_responseData.getJSONArray("results"); 

    //parsedResult += "Google Search APIs (JSON) for : <b>" + search_item + "</b><br/>"; 
    //parsedResult += "Number of results returned = <b>" + jsonArray_results.length() + "</b><br/><br/>"; 

    for(int i = 0; i < jsonArray_results.length(); i++){ 

     JSONObject jsonObject_i = jsonArray_results.getJSONObject(i); 

     String iTitle = jsonObject_i.getString("title"); 
     String iContent = jsonObject_i.getString("content"); 
     String iUrl = jsonObject_i.getString("url"); 

     parsedResult += "<a href='" + iUrl + "'>" + iTitle + "</a><br/>"; 
     parsedResult += iContent + "<br/><br/>"; 
    } 

    return parsedResult; 
} 

XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id = "@+id/activitymain" 
> 




<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id = "@+id/txtSearch"/> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtSearch" 
     android:text="Search" 
     android:id="@+id/searchbtn" /> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtSearch" 
     android:layout_toRightOf="@+id/searchbtn" 
     android:layout_toEndOf="@+id/searchbtn" 
     android:id="@+id/save" 
     android:text="  Save  " /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Saved Searches" 
     android:id="@+id/savedSearches" 
     android:layout_alignTop="@+id/save" 
     android:layout_toRightOf="@+id/save" 
     android:layout_toEndOf="@+id/save" /> 
</RelativeLayout> 



<ListView 
    android:layout_width="match_parent" 
    android:layout_height="174dp" 
    android:id = "@android:id/list" 
    android:background="#FF498CDE"> 

</ListView> 

<WebView 
    android:layout_width="match_parent" 
    android:layout_height="202dp" 
    android:id="@+id/webView" 
    android:layout_gravity="center_horizontal" /> 

基本上我想,當我點擊搜索按鈕同時運行的API。 請有人指出我在正確的方向,我完全是新的這一點。 謝謝

回答

0

問題是,你沒有得到任何響應在你的JsonSearchTask AsyncTask。

的問題是,你正在使用谷歌的網絡搜索的API現在沒空。您應該使用Google自定義搜索API(https://developers.google.com/custom-search/)。

相關問題