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に変更し、ループを使用してそのリストにそれぞれを追加してから、それを返すことができます。Stringdoc.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 内でも機能し、Jsoup を使用する代わりに、同じ ArrayList を作成して返すことができます。

于 2013-07-02T14:55:05.927 に答える