2016-04-29 8 views
0

rest.Andであるwebserviceを使用してイメージを取得する必要があります。チュートリアルのほとんどは、プロセスをトリガーするためにボタンをクリックすることです。私はこのような方法を実装する必要がありますトリガーやボタンをクリックせずにすぐにロードすることができます。ソースやアイデアが必要です。 助けていただければ幸いです。アンドロイド安心してGET操作

答えて

1

Asynctaskを実装してonCreateを呼び出します。

これを行う方法の例を次に示します。

public class MainActivity extends ListActivity { 
. 
. 
. 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    . 
    . 
    . 

    // Calling async task to get json 
    new GetContacts().execute(); 
} 

/** 
* Async task class to get json by making HTTP call 
* */ 
private class GetContacts extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Showing progress dialog 
     pDialog = new ProgressDialog(MainActivity.this); 
     pDialog.setMessage("Please wait..."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     // Creating service handler class instance 
     ServiceHandler sh = new ServiceHandler(); 

     // Making a request to url and getting response 
     String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET); 

     Log.d("Response: ", "> " + jsonStr); 

     if (jsonStr != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 

       // Getting JSON Array node 
       contacts = jsonObj.getJSONArray(TAG_CONTACTS); 

       // looping through All Contacts 
       for (int i = 0; i < contacts.length(); i++) { 
        JSONObject c = contacts.getJSONObject(i); 

        String id = c.getString(TAG_ID); 
        String name = c.getString(TAG_NAME); 
        String email = c.getString(TAG_EMAIL); 
        String address = c.getString(TAG_ADDRESS); 
        String gender = c.getString(TAG_GENDER); 

        // Phone node is JSON Object 
        JSONObject phone = c.getJSONObject(TAG_PHONE); 
        String mobile = phone.getString(TAG_PHONE_MOBILE); 
        String home = phone.getString(TAG_PHONE_HOME); 
        String office = phone.getString(TAG_PHONE_OFFICE); 

        // tmp hashmap for single contact 
        HashMap<String, String> contact = new HashMap<String, String>(); 

        // adding each child node to HashMap key => value 
        contact.put(TAG_ID, id); 
        contact.put(TAG_NAME, name); 
        contact.put(TAG_EMAIL, email); 
        contact.put(TAG_PHONE_MOBILE, mobile); 

        // adding contact to contact list 
        contactList.add(contact); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Log.e("ServiceHandler", "Couldn't get any data from the url"); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
     /** 
     * Updating parsed JSON data into ListView 
     * */ 
     ListAdapter adapter = new SimpleAdapter(
       MainActivity.this, contactList, 
       R.layout.list_item, new String[] { TAG_NAME, TAG_EMAIL, 
         TAG_PHONE_MOBILE }, new int[] { R.id.name, 
         R.id.email, R.id.mobile }); 

     setListAdapter(adapter); 
    } 

} 

}

あなたが見ることができるように、あなただけのasynctask呼び出す必要があります(新しいGetContacts()を実行する();。)のonCreate、それはあなたがそれをデザインとして動作します。

参考文献:http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

+0

ご回答ありがとうございます。試してみてください。 –

+0

ありがとうございます。 –

+0

あなたは歓迎です – Ricardo

0

onCreate()の方法で画像を読み込むコードを記述するActivity。したがって、ユーザーはボタンや何かをトリガーする必要はありません。

+0

おかげでそれを試して北韓このチュートリアルを読むことができます詳細については、また

。 –

+0

onCreate()は、オリエンテーションの変更を含むアクティビティが再作成されるたびに呼び出されます。 Androidのライフサイクルのページhttp://developer.android.com/training/basics/activity-lifecycle/index.htmlをご覧ください。たぶんいくつかのキャッシングタイプのメカニズムが含まれているので、毎回イメージをダウンロードする必要はありません。チュートリアルを覚えているだけでも残念ですが、理解するのは良いことです。 –

+1

画像をキャッシュするImage Downloderを使用することができます。 https://github.com/nostra13/Android-Universal-Image-Loader –