AndroidリソースをArrayListに読み込むことはできません。何をしてもリストは空です。スレッドで実行しないと、logcatにStrictMode$AndroidBlockGuardPolicy.onNetwork
というエラーが表示されます。 Java VMでは、これは完全に動作しています。サイトがリストにロードされ、私が望むデータを取得できます。ここでAndroidがウェブサイトからArrayListにデータをフェッチしない
コードは次のとおりです。
public class WeatherData {
public static String data() {
String[] tempsArr = new String[9];
String[] minArr = new String[9];
Calendar calendar = Calendar.getInstance();
String[] weekDay = new String[1];
SimpleDateFormat[] dayFormat = new SimpleDateFormat[1];
dayFormat[0] = new SimpleDateFormat("E");
weekDay[0] = dayFormat[0].format(calendar.getTime());
final ArrayList<String> list = new ArrayList<String>();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
System.setProperty("http.proxyHost", "cache.mrt.ac.lk");
System.setProperty("http.proxyPort", "3128");
//Document doc = Jsoup.connect(url).timeout(10000).get();
URL link = new URL("https://www.sinoptik.bg/shumen-bulgaria-100727233/10-days");
BufferedReader in = new BufferedReader(new InputStreamReader(link.openStream()));
String inputLine;
String[] arr;
int count = 0;
while ((inputLine = in.readLine()) != null) {
list.add(inputLine);
count++;
}
in.close();
} catch (MalformedURLException me) {
System.out.println(me);
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
});
thread.start();
dayFormat[0] = new SimpleDateFormat("E");
weekDay[0] = dayFormat[0].format(calendar.getTime());
int idx = 0;
for (
int j = 0; j < list.size() - 550; j++)
{
if (list.get(j).contains(weekDay[0].toString())) {
tempsArr[idx] = getNum(list.get(j + 3));
minArr[idx] = getNum(list.get(j + 5));
idx++;
calendar.add(Calendar.DAY_OF_WEEK, 1);
weekDay[0] = dayFormat[0].format(calendar.getTime());
}
}
return tempsArr[1];
}
私はそれが最適化が必要と知っているが、私は一つの指標で一つだけのアレイを使用する理由です(それは少なくとも1つの値を仕事と私を与える作るために最初にしたいです戻り値)。私はそれがサイトに接続しているデバッグでそれを見るが、ArrayListは空であり、何もしていない。
'AndroidをウェブサイトをArrayListにロードすることはできません。アンドロイド?あなたはあなたのアプリを意味しますか?あなたのAndroidアプリ? – greenapps
通常、ネットワーキングのためにAndroidでAsynctaskを使用しています。 –
はい、私がアプリを実行すると、これから "null"値が得られます。 – Rado