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;
    }
}
4

1 回答 1

0

我假设当您运行此代码时,您会teststring.txt在 logcat 中打印每一行?

如果是这种情况,那么您可以将SyncTaskfrom的返回类型更改为类似的String东西ArrayList甚至是String数组,然后使用循环将每个添加doc.toString();到该列表中,然后返回它。for

从那里您可以访问该字符串数组并相应地填充您TextView的 s 。

您还可以使用 Jsoup 将文本文件本地缓存在用户的 SD 卡上,然后您可以TextView从那里填充您的 s,而不必每次都重新连接。

编辑:而不是使用 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。

于 2013-07-02T14:55:05.927 回答