我这里有这个代码,它应该获取我需要为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 :(得分:0)
我假设当你运行这段代码时,你的logcat中会打印出teststring.txt
的每一行?
如果是这种情况,那么您可以将SyncTask
的返回类型从String
更改为ArrayList
甚至String
数组,然后添加每个doc.toString();
1}}使用for
循环到该列表,然后返回它。
从那里,您可以访问该字符串数组并相应地填充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。