2017-02-17 17 views
0

adminpage.java代わり

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_admin_page); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    mTextView = (TextView) findViewById(R.id.dataList); 
    Button button = (Button) findViewById(R.id.rf); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // new JSONTask().execute("https://jsonparsingdemo-cec5b.firebaseapp.com/jsonData/moviesDemoItem.txt"); 
      new JSONTask().execute("https://jsonparsingdemo-cec5b.firebaseapp.com/jsonData/moviesDemoList.txt"); 

     } 
    }); 

} 
public static class JSONTask extends AsyncTask<String, String, String> { 
    @Override 
    protected String doInBackground(String... params) { 
     HttpURLConnection connection = null; 
     BufferedReader reader = null; 

     try { 
      URL url = new URL(params[0]); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 

      InputStream stream = connection.getInputStream(); 

      reader = new BufferedReader(new InputStreamReader(stream)); 

      StringBuffer buffer = new StringBuffer(); 

      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       buffer.append(line); 
      } 

      String finalJson = buffer.toString(); 

      JSONObject parentObject = new JSONObject(finalJson); 
      JSONArray parentArray = parentObject.getJSONArray("movies"); 

      StringBuffer finalBufferedData = new StringBuffer(); 
      for (int i = 0; i < parentArray.length(); i++) { 
       JSONObject finalObject = parentArray.getJSONObject(i); 
       String movieName = finalObject.getString("movie"); 
       int year = finalObject.getInt("year"); 
       finalBufferedData.append(movieName + " - " + year + "\n"); 
      } 
      //JSONObject finalObject = parentArray.getJSONObject(0); 


      return finalBufferedData.toString(); 

      //return buffer.toString(); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } finally { 
      if (connection != null) { 
       connection.disconnect(); 
      } 
      try { 
       if (reader != null) { 
        reader.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     mTextView.setText(result); 


    } 


} 

だから私は結論付けることができます何この上のベースがあります。

1)JSONTASKはURLを受け取り、別の文字列に分割してリンクし、finalBufferedData.toString()を返します。

2)onPostExecuteは結果を受け取り、mTextViewに設定します。

3)onclicklistenerは関数を実行し、手順2を実行して表示します。

質問!

  • 私はonPostExecute(String result) <関数を呼び出すコードのどこに表示されない - 結果は何ですか?それは返品ですか?finalBufferedData.toString()

  • 別のアクティビティで同じ機能を実行していますが、onClicklistenerを実行しないでTextViewに表示するにはどうすればよいですか。

+0

@SRBbansのおかげ。 2番目の部分は私が例を持つことができます。彼らは異なる活動から来ているからです。私が行った現在の方法はあまり適切ではなかった、私は別の活動にコードの同じ塊をコピーし、そこから呼び出す...それはまだ理想的ではない – Chris

+0

おじさん.. 2番目の活動でコードを書く際に何か問題が.. ? –

+0

そのコードの重複は正しいですか?それは悪い書面ではありません – Chris

答えて

0

。はい、戻り値(finalBufferedData.toString())です。これはdoInBackgroundメソッドの出力(結果/戻り値)です。

。 onClickなしで実行するには、onCreateまたはonResumeを呼び出します。 例えば: - 最初の答えのための

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

// put the AsyncTask call here