2017-07-19 7 views
0

このコードを使用して、JSONを使用してREST呼び出しを解析します。 私は、(基本的にユーザーが望むものを検索できるようにするために)解析されているURLの一部である送信ボタンを使ってeditTestInputを追加したいと思います。Androidでurl rest呼び出しにユーザー入力用のeditTextを追加する

静的なURLを解析するコードです(注:urlには検索語の変数があります;これはユーザー入力にしたいもので、URLの解析と結果の返送を開始します) JSON形式):

public class MainActivity extends AppCompatActivity { 

    private String TAG = MainActivity.class.getSimpleName(); 
    private ListView lv; 
    public String term = "rabi"; 
    public String url; 
    public EditText editTextInput; 

    ArrayList<HashMap<String, String>> itemList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editTextInput = (EditText) findViewById(R.id.editTextInput); 

     itemList = new ArrayList<>(); 
     lv = (ListView) findViewById(R.id.list); 

     new GetSearchItems().execute(); 
    } 

    private class GetSearchItems extends AsyncTask<Void, Void, Void> { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      Toast.makeText(MainActivity.this,"SearchResults are downloading",Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      HttpHandler sh = new HttpHandler(); 
      // Making a request to url and getting response 
      String url = "https://www.googleapis.com/customsearch/v1?key=xxxxxxxxxxxxxxxxxxxxxxx&cx=xxxxxxxxxxxxxxxx:xxxxxxxxxx=" + term + "&gsc.sort="; 
      String jsonStr = sh.makeServiceCall(url); 

      Log.e(TAG, "Response from url: " + jsonStr); 
      if (jsonStr != null) { 
       try { 
        JSONObject jsonObj = new JSONObject(jsonStr); 

        // Getting JSON Array node 
        JSONArray items = jsonObj.getJSONArray("items"); 

        // looping through All results 
        for (int i = 0; i < items.length(); i++) { 
         JSONObject c = items.getJSONObject(i); 
         String title = c.getString("title"); 
         String link = c.getString("link"); 
         String displayLink = c.getString("displayLink"); 
         String formattedUrl = c.getString("formattedUrl"); 
         String snippet = c.getString("snippet"); 

         // tmp hash map for single result 
         HashMap<String, String> item = new HashMap<>(); 

         // adding each child node to HashMap key => value 
         item.put("title", title); 
         item.put("link", link); 
         item.put("displayLink", displayLink); 
         item.put("formattedUrl", formattedUrl); 
         item.put("snippet", snippet); 

         // adding contact to result list 
         itemList.add(item); 
        } 
       } catch (final JSONException e) { 
        Log.e(TAG, "Json parsing error: " + e.getMessage()); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(getApplicationContext(), 
            "Json parsing error: " + e.getMessage(), 
            Toast.LENGTH_LONG).show(); 
         } 
        }); 

       } 

      } else { 
       Log.e(TAG, "Couldn't get json from server."); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), 
           "Couldn't get json from server. Check LogCat for possible errors!", 
           Toast.LENGTH_LONG).show(); 
        } 
       }); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      ListAdapter adapter = new SimpleAdapter(MainActivity.this, itemList, 
        R.layout.list_item, new String[]{ "title","link", "displayLink", "formattedUrl", "snippet"}, 
        new int[]{R.id.title, R.id.link, R.id.displayLink, R.id.formattedUrl, R.id.snippet}); 
      lv.setAdapter(adapter); 
     } 
    } 
} 

誰かが私の現在のコードを変更する方法を教えてください。 ありがとう!

答えて

0

私はeditTextInputをonCreateメソッドに追加することで問題を解決しました。 次に、HTTPリクエストをonClickメソッドに入れるためのコードを記述します。 私のアプリケーションは、意図したとおりに動作しています。

関連する問題