2016-05-04 5 views
0

Also ich versuche, zwei API in einer Aktivität zu implementieren, und zeigen Sie die Listview und eine Webansicht für meine zweite API in derselben Aktivität. Ich schaffte es, die Listview herunter zu bekommen. Dies ist Teil der MainActivity wo ich versucheWie können Sie eine Listenansicht und eine Webansicht in einer Aktivität anzeigen?

@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(); 
     } 
    }); 

} 

Dies ist die Googlesearch Api public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState), die beide API durch die onClick-Methode aufrufen beide laufen; 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" /> 

Grundsätzlich möchte ich beide api laufen, wenn ich auf die Schaltfläche Suche klicken. Bitte jemand weist mich in die richtige Richtung, ich bin völlig neu dazu. Danke

Antwort

0

Das Problem ist, dass Sie keine Antwort in Ihrer JsonSearchTask AsyncTask erhalten.

Das Problem ist, dass die API, die Sie für die Google-Websuche verwenden, jetzt nicht verfügbar ist. Sie sollten die benutzerdefinierte Such-API von Google verwenden (https://developers.google.com/custom-search/).

Verwandte Themen