2017-01-04 8 views
2

jsonファイルから読み込むAsynctask関数を実行しています。私はpostExecuteの文字列contact's "nombre、categoria、hora、lugar ..."のように、別のアクティビティに渡したいと思います。 postExecuteで連絡先の値を取得するにはどうすればよいですか?誰かが私を助けることができますか?これは私のコードであるポスト実行時の値を取得

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


     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      // Showing progress dialog 
      pDialog = new ProgressDialog(getActivity()); 
      if(idioma.equalsIgnoreCase("es")){ 
       pDialog.setMessage("Por favor espere..."); 
      } 
      else{ 
       pDialog.setMessage("Itxaron mesedez..."); 
      } 
      pDialog.setCancelable(false); 
      pDialog.show(); 

     } 

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

       try { 

        JSONObject jsonObj = new JSONObject(loadJSONFromAsset()); 

        // Getting JSON Array node 
        eventos = jsonObj.getJSONArray("results"); 

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

         String categoria = c.getString(TAG_CATEGORIA); 
         String nombre = c.getString(TAG_NOMBRE); 
         String hora = c.getString(TAG_HORA); 
         String lugar = c.getString(TAG_LUGAR); 
         String fecha = c.getString(TAG_FECHA); 
         String coordenadas = c.getString(TAG_COORDENADAS); 
         String info = c.getString(TAG_INFO); 
         String imagen= c.getString(TAG_IMAGEN); 

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

         // adding each child node to HashMap key => value 
         contact.put("categoria", categoria); 
         contact.put("nombre", nombre); 
         contact.put("hora", hora); 
         contact.put("nombre_lugar", lugar); 
         contact.put("fecha", fecha); 
         contact.put("coordenadas", coordenadas); 
         contact.put("info", info); 
         contact.put("imagen", imagen); 


         // adding contact to contact list 
         eventosList.add(contact); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 


      return null; 


     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      // Dismiss the progress dialog 
      if (pDialog.isShowing()) 
       pDialog.dismiss(); 




     } 

    } 

が、これはあなたが

private class GetProgramaSC extends AsyncTask<String, String, String> { 


      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       // Showing progress dialog 
       pDialog = new ProgressDialog(getActivity()); 
       if(idioma.equalsIgnoreCase("es")){ 
        pDialog.setMessage("Por favor espere..."); 
       } 
       else{ 
        pDialog.setMessage("Itxaron mesedez..."); 
       } 
       pDialog.setCancelable(false); 
       pDialog.show(); 

      } 

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



       return loadJSONFromAsset(); 


      } 

      @Override 
      protected void onPostExecute(String result) { 
       super.onPostExecute(result); 
       // Dismiss the progress dialog 

     try { 

         JSONObject jsonObj = new JSONObject(result); 

         // Getting JSON Array node 
         eventos = jsonObj.getJSONArray("results"); 

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

          String categoria = c.getString(TAG_CATEGORIA); 
          String nombre = c.getString(TAG_NOMBRE); 
          String hora = c.getString(TAG_HORA); 
          String lugar = c.getString(TAG_LUGAR); 
          String fecha = c.getString(TAG_FECHA); 
          String coordenadas = c.getString(TAG_COORDENADAS); 
          String info = c.getString(TAG_INFO); 
          String imagen= c.getString(TAG_IMAGEN); 

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

          // adding each child node to HashMap key => value 
          contact.put("categoria", categoria); 
          contact.put("nombre", nombre); 
          contact.put("hora", hora); 
          contact.put("nombre_lugar", lugar); 
          contact.put("fecha", fecha); 
          contact.put("coordenadas", coordenadas); 
          contact.put("info", info); 
          contact.put("imagen", imagen); 


          // adding contact to contact list 
          eventosList.add(contact); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

if (pDialog.isShowing()) 
        pDialog.dismiss(); 




      } 

     } 

後で好きなデータを渡すためにバンドルするハッシュマップを追加して をpostexecuteして行うために パスデータは非常に簡単です、あなたにそんなに

+0

http://stackoverflow.com/questions/17922804/arraylisthashmapstring-string-to-string – sasikumar

答えて

0

ありがとうございましたアクティビティ

try: in post実行

Bundle extras = new Bundle(); 
extras.putSerializable("HashMap",hashMap); 
intent.putExtras(extras); 

、別の活動に

Bundle bundle = this.getIntent().getExtras(); 

if(bundle != null) { 
    hashMap = bundle.getSerializable("HashMap"); 
} 
+0

以降他のアクティビティにどのように「nombre」を渡すことができますか?ありがとうございます – Androi

+0

更新された回答を確認してください – raj

2
はあなたにAsyncTaskの署名を変更

private class GetProgramaSC extends AsyncTask<Void, Void, List<String>>

、その後doInBackgroundリストを返却する必要があります。したがって、をdoInBackgroundの末尾に返すと、onPostExecuteが届きます。

private class GetProgramaSC extends AsyncTask<Void, Void, List<String>> { 

... 

    @Override 
    protected List<String> doInBackground(Void... arg0) { 

      ... 

     return eventos; 


    } 

    @Override 
    protected void onPostExecute(List<String> result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 

    } 

} 
+0

とそれ以降どうすれば "nombre"を別のアクティビティに渡すことができますか?ありがとう – Androi

+0

あなたの意思を込めてこのインテントでアクティビティを呼び出す –

+0

このようにしますか?インテント=新しいインテント(getActivity()、 \t \t AnotherActivity.class); in.putExtra( "nombre"、nombre); – Androi

0

文字列の大量のデータが別のアクティビティへの意思の助けを借りて行うことができないので、JSONを解析した後、プロジェクト内の任意の場所に呼び出すことができ、アプリケーションクラスでこれらを保存することができ渡します。

0

は、get()メソッドで

public class GetProgramaSC extends AsyncTask<Void, Void, Object> {} 

コールasyncTask結果のために(あなたが結果として好きな)オブジェクトを使用してクラスを拡張し、それがメインスレッド上で実行されます覚えておいてください。

Object result = new GetProgramaSC().get(); 

希望すると助かります!新しい活動の

その後
0
@Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      // Dismiss the progress dialog 
      if (pDialog.isShowing()) 
       pDialog.dismiss(); 
      Intent i = new Intent(getActivity, NewActivity.class); 
      i.putExtra("arraylist", eventolist); 
      startActivity(i); 
} 

ArrayList<HashMap<String, String>> arraylist = (ArrayList<HashMap<String,String>>) getIntent().getSerializableExtra("arraylist"); 

今だけハッシュマップと新しい活動中のArrayListからその値を抽出! 例: - arraylist.get(0).get( "nombre");

関連する問題