1

res/raw フォルダーにContinent.txtファイルを配置しました。中には以下のものがあります。

<div class="continents"> 
  <a href="#US">US</a> 
  <a href="#CA">Canada</a> 
  <a href="#EU">Europe</a> 
</div> 

jsoup を使用して米国、カナダ、ヨーロッパのテキストを解析できますが、それらを TextView に表示すると、1 行で表示されます。出力は次のようになります。

米国 カナダ ヨーロッパ

私は出力がこのようになりたいです。

私たち

カナダ

ヨーロッパ

これは私のコードです。

package com.example.readfile;


import java.io.InputStream;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.Resources;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView txtContinent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtContinent = (TextView) findViewById(R.id.textView1);

        new MyTask().execute();
    }

    class MyTask extends AsyncTask<Void, Void, ArrayList<String>> {

        ArrayList<String> arr_linkText = new ArrayList<String>();

        @Override
        protected ArrayList<String> doInBackground(Void... params) {

            Document doc;

            try {
                Resources res = getResources();
                InputStream in_s = res.openRawResource(R.raw.continent);

                byte[] b = new byte[in_s.available()];
                in_s.read(b);

                doc = Jsoup.parse(new String(b));
                Element link = doc.select("a").first();
                String text = doc.body().text(); 

                arr_linkText.add(text);

            } catch (Exception e) {
                // e.printStackTrace();
                txtContinent.setText("Error: can't open file.");
            }

            return arr_linkText; // << retrun ArrayList from here
        }

        @Override
        protected void onPostExecute(ArrayList<String> result) {

            for (String temp_result : result) {

                txtContinent.append(temp_result + "\n");
            }

        }

    }

}

ファイルを1行ずつ読む方法がわかりません。誰かが説明してくれることを願っています。ありがとうございました!

4

2 に答える 2

1

You are taking the text of the entire body of the document at once. You need to parse it out by each element, like so

Elements links = doc.select("a");
for (Element link : links) {
    arr_linkText.add(link.text());
}

in case it wasn't clear, the above code is meant to replace the following --

Element link = doc.select("a").first();
String text = doc.body().text(); 

arr_linkText.add(text);
于 2013-01-13T05:57:43.833 に答える
0

android:inputTypeを含めるように設定しましたtextMultiLineか?

于 2013-01-13T05:49:37.380 に答える