2013-07-02 73 views
0

我在這裏有這段代碼,它應該得到我需要爲TXT文檔上的每一行文本生成字符串的信息,但我不確定我必須從哪裏去以及我的應用程序是否獲取了信息。如果需要這些信息,需要生成的字符串將會進入TextView,但是我很不確定我從哪裏去,因爲我對Jsoup沒有任何瞭解,並且被告知這是獲取信息的最簡單方法字符串的文字,但我只需要幫助如何在那裏得到它。正在使用的代碼如下:我從哪裏出發?

public void updatebutton(View v){ 
    new SyncTask().execute(); 
    Toast.makeText(MainActivity.this, "Updating", Toast.LENGTH_LONG).show(); 
} 

private class SyncTask extends AsyncTask<String, Void, String>{ 

    @Override 
    protected String doInBackground(String... params) { 
     Document doc = null; 
     String returnValue =""; 
     String baseWebPage = "http://nowactivity.webs.com/teststring.txt"; 

     for(int i = 0; i< params.length; i++){ 
      try { 
      doc = Jsoup.connect(
       baseWebPage) 
       .get(); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 

      Log.i("DOC", "The line " + doc.toString()); 

     } 

      return returnValue; 
    } 
} 
+0

嘗試閱讀如何在這裏使用jsoup:http://jsoup.org/cookbook/他們給出了一些很好的基本例子,可以讓你開始。 – dymmeh

+0

我翻閱食譜,很不幸,我沒有找到任何可以使用的東西。唯一一次我將使用Jsoup是爲了這個特定的用途,所以它對我來說並不是真的需要(對不起,如果它看起來像我有點傲慢)。 – ThePoloDoc

+0

你並不傲慢。你只是不清楚。我們不知道你想要如何處理網站的內容,因爲你沒有把它放在你的問題中 – dymmeh

回答

0

我假設,當你運行該代碼,你得到的teststring.txt每一行中的logcat的印刷?

如果是這樣的話,那麼你可以從String改變SyncTask返回類型類似ArrayList甚至String陣列,然後使用您的for循環添加每個doc.toString();到列表中,然後返回。

從那裏你可以訪問該字符串數組並相應地填充你的TextView

您也可以使用Jsoup在用戶的SD卡上本地緩存文本文件,然後您可以從那裏填充您的TextView,無需每次都重新連接。

編輯:不要使用Jsoup的,請嘗試使用此:

private class SyncTask extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... params) { 
     String returnValue = "";  
     String u = "http://nowactivity.webs.com/teststring.txt"; 
     URL url; 
     InputStream stream; 
     InputStreamReader streamReader; 
     BufferedReader reader; 
     String str; 

     try { 
      System.out.println("Reading URL: " + u); 
      url = new URL(u); 
      stream = url.openStream(); 
      streamReader = new InputStreamReader(stream); 
      reader = new BufferedReader(streamReader); 

      do { 
       str = reader.readLine(); 
       if (str != null) 
       System.out.println(str); 
      } while (str != null); 

     } catch (MalformedURLException e) { 
      System.out.println("Invalid URL"); 
     } catch (IOException e) { 
      System.out.println("Can not connect"); 
     } 

     return returnValue; 
    } 
} 

這也將在裏面的AsyncTask工作,與您可以創建相同的ArrayList並返回它,而不是試圖用Jsoup。

+0

在我的logcat中沒有任何東西會被打印出來以處理文本文件。你想要一個日誌嗎?你喜歡什麼logcat,比如info或者verbose?我不確定textstring.txt會打印在什麼上面。 – ThePoloDoc

+0

我認爲這裏的問題是,您正在嘗試使用Jsoup這是一個HTML解析器來獲取原始文本。你真的應該只使用'InputStreamReader'和'BufferedReader'來解析文件中的文本。 –

+0

這是根據doInBackground方法嗎?還是我必須稍微改變一下? – ThePoloDoc