From the logs, we know that we have the right forecast
data and it's in the right format that we want as
an array of strings. So it's finally time to update the
UI. Think back on how AsyncTasks are able to pass data
back onto the main thread. You can hit Ctrl+O to see
the list of available methods we can override in AsyncTask. If
you click on any of them, it will be prepopulated in
the code for you. Then, you can update ArrayAdapter with the new
data that was retrieved by the AsyncTask. As a hint, you
can make the ForecastAdapter be a global variable. That way, you
can access it from within the FetchWeatherTask. Make sure that this
is not a static class, otherwise, you won't be able to
access the member variable from the forecast fragment. Then, go ahead
and compile and build the app. When you run it, and
you hit the refresh button, you should see a week's worth
of weather data for your location. Once it's working, you can
remove the verbose log statements so you don't
clutter the logs. As you're working on this
code, if you see an unsupported operation exception,
make sure that when you're creating the fake
data, that when you initialize ArrayAdapter, you passed
in a list of strings, and not an
array. That way you can call the clear
method or the add method on this list collection.
من خلال السجلات، نعرف أن لدينا بيانات التنبؤ
الصحيحة وأنها توجد بتنسيق صحيح والذي نريده
كصفيف من السلاسل. وبالتالي فقد حان الوقت أخيرًا من أجل تحديث
واجهة المستخدم. فكر مرة أخرى في الكيفية التي يستطيع بها تطبيق AsyncTasks
تمرير البيانات إلى مؤشر الترابط الرئيسي. يمكنك الضغط على Ctrl+O لكي ترى
قائمة الطرق المتاحة التي يمكننا تجاوزها في AsyncTask. فإذا
قمت بالنقر فوق أي منها، فسوف تقوم مسبقًا
بتزويدك بالتعليمة البرمجية. من ثم، يمكنك تحديث تطبيق ArrayAdapter باستخدام البيانات
الجديدة التي تمت استعادتها عن طريق مهمة AsyncTask. وكإشارة، يمكنك
جعل تطبيق ForecastAdapter ليكون متغيرًا عموميًا. وبهذه الطريقة، يمكنك
الوصول إليها من خلال مهمة FetchWeatherTask. تأكد أن هذه ليست
فئة ثابتة، وإلا فلن تكون قادرًا على
الوصول إلى متغير العضو من جزء التنبؤ. ومن ثم، تقدم
وقم بجمع وإنشاء التطبيق. وعندما تقوم بتشغيله والضغط
على زر التحديث، ينبغي أن ترى القيم
الأسبوعية لبيانات الطقس لموقعك. وأثناء عملك، يمكنك
إزالة عبارات السجلات المطولة، وبالتالي لا
يمكنك التشويش على السجلات. وحيث أنك تعمل على
،هذا الرمز، فإنك إذا رأيت استثناءً لعملية غير معتمدة
فتأكد أنه أثناء إنشائك للبيانات
الوهمية عند بدئك لتطبيق ArrayAdapter، فإنك قد تكون
قمت بتمريرها في قائمة من السلاسل وليس
مجموعة. وتلك الطريقة هي التي يمكنك أن تسميها
.الأسلوب الواضح أو أسلوب الإضافة في هذه المجموعة من القائمة
Los registros dicen
que tenemos los datos correctos
de los pronósticos y están
en el formato exacto deseado:
una matriz de cadenas.
Por fin, es el momento de actualizar
la UI. Recuerden cómo
AsyncTasks es capaz de pasar datos
de retorno al subproceso principal.
Pueden pulsar Ctrl + O para ver
la lista de métodos disponibles
que se pueden anular en AsyncTask.
Si hace clic en cualquiera,
se rellenarán previamente
en el código. Después, puede
actualizar ArrayAdapter con los nuevos
datos recupedos por el AsyncTask.
Como una sugerencia,
puede convertir ForecastAdapter
en una variable global.
Así, puede accederlo desde dentro de
etchWeatherTask. Asegúrese de que esta
no sea una clase estática,
de lo contrario, no será capaz de
acceder a la variable miembro desde
el fragmento de pronóstico. Bien, siga
y compile la aplicación. Al ejecutarla,
y tocar el botón de actualización,
debe ver una semana
de datos meteorológicos
locales. Una vez que funcione,
puede quitar las declaraciones
del registro
para que no desordenar
los registros. Al trabajar
en el código, si ve una excepción
de operación sin respaldo,
asegurese cuando cree los datos simulados
que al inicializar ArrayAdapter, entregue
una lista de cadenas, y no una matriz.
De esa manera puede llamar
el método de borrar
el método de añadir
en este conjunto de listas.
Dari log, kita mengetahui bahwa kita
memiliki hak untuk forecast data
dan dalam format yang tepat yang kita
inginkan yaitu serangkaian utas.
Maka waktunya untuk memperbarui UI.
Fikirkan kembali bagaimana AsyncTask dapat
mengirimkan data kembali ke utas utama.
Anda dapat menekan Ctrl+O untuk melihat
daftar metode yang tersedia
kita dapat ubah di AsyncTask.
Jika Anda klik salah satunya, itu akan di
prepopulasikan pada kode untuk Anda.
Kemudian, Anda dapat perbarui ArrayAdapter
dengan data baru
yang ditarik oleh AsyncTask.
Petunjuk, Anda dapat menjadikan
ForecastAdapter sebagai variabel global.
Dengan begitu, Anda dapat mengaksesnya
dari FetchWeatherTask.
Pastikan bahwa ini bukan kelas statik,
kalau tidak,
Anda tidak akan dapat mengakses variabel
anggota dari forcast fragment.
Kemudian, lanjutkan dan kompilasi dan
bangun aplikasinya.
Saat Anda menjalankannya, dan Anda tekan
tombol muat ulang, Anda akan lihat
data cuaca selama seminggu untuk lokasi
Anda.
Setalah aplikasinya bekerja, Anda dapat
menghapus verbose log statements
jadi Anda tidak menyumbat log nya.
Saat Anda bekerja dengan kode ini,
jika Anda melihat unsupported operation
exception, pastikan
bahwa saat Anda membuat data palsu, saat
Anda menginisialisasi ArrayAdapter,
Anda melewatkan beberapa utas, dan bukan
dan bukan suatu rangkaian.
Dengan begitu Anda dapat panggil
clear method
atau add method pada daftar koleksi ini.
ログを見ると予報データが正しく
正しいString型配列であることが分かります
それではUIをアップデートしましょう
まずAsyncTaskがどのように
データをメインスレッドに戻すかを振り返ります
Ctrl+Oを押すと AsyncTaskの中の
オーバーライド可能な
メソッド一覧を見ることができ
クリックするとコードに設定されます
ではAsyncTaskが取得した新しいデータで
ArrayAdapterをアップデートしてください
ヒントは変数ForecastAdapterを
グローバル変数にすることです
そうすればFetchWeatherTaskから
ForecastAdapterにアクセスできます
静的クラスだとForecastFragmentから
メンバ変数にアクセスできないので
注意してください
ではアプリをコンパイルしてビルドしましょう
それから実行してRefreshボタンを押すと
設定した位置の週間天気予報が表示されます
アプリがうまく動いたら
あとで混乱しないよう詳細ログを削除します
実行中にUnsupportedOperationExceptionが
発生する場合は
疑似データを生成して
ArrayAdapterを初期化する際に
配列ではなくList<String>で渡してください
そうすれば このListコレクションに対して
clearメソッドやaddメソッドを呼び出せます
로그에서 우리는
올바른 기상 데이터를 받았고
원하던 포멧의 문자 배열로
받았음을 압니다
그래서 UI를 최종적으로
업데이트할 때입니다
AsyncTask가 어떻게 메인 스레드로
데이터를 전달했는지 생각해보세요
Ctrl+O 를 눌러서
AsyncTask에서 override할 수 있는
모든 메소드의 목록을 볼 수 있어요
그 중 하나를 누르면
코드안에서 prepopulate할 겁니다
그 다음에 AsyncTask에서 받은
새로운 데이터로
ArrayAdapter를 업데이트 할 수 있어요
힌트를 드리자면
ForecastAdapter를
전역 변수를 만들 수 있어요
그래서 FetchWeatherTask안에서
접속할 수 있어요
이것은 static class가 아님을 확인하세요
그렇지 않으면
forecast fragment로부터
멤버 변수에 접속할 수 없습니다
그 다음 컴파일해서 앱을 만드세요
그걸 실행해서
refresh 버튼을 누리면
여러분이 위치한 곳의
1주일치 날씨가 나와야 합니다
작동이 되면
로그를 지저분하게 만들지 않으려면
verbose log 를 지우세요
여러분이 이 코드를 작업하면서
unsupported operation exception를 보면
가짜 데이터를 만들 때
ArrayAdapter를 초기화하면
문자열을 배열이 아니라
리스트로 전달하세요
그런 식으로 이 list collection에서
clear 메소드나
add 메소드를 부를 수 있어요
De acordo com os logs, sabemos que temos os dados de previsão certos,
e estão no formato correto que queremos como
um array de strings. Finalmente, é hora de atualizar a
IU. Pense em como as AsyncTasks são capazes de passar dados
de volta ao thread principal. Você pode pressionar Ctrl+O para ver
a lista de métodos disponíveis que podemos substituir na AsyncTask. Se
você clicar em qualquer um, ele será preenchido automaticamente
no código para você. Então, você poderá atualizar ArrayAdapter com os novos
dados recuperados pela AsyncTask. Uma dica: você
pode transformar o ForecastAdapter em uma variável global. Assim, você
pode acessá-la pela FetchWeatherTask. Verifique se essa
não é uma classe estática, senão você não poderá
acessar a variável membro pelo fragmento de previsão. Vá em frente
e compile e construa o aplicativo. Ao executá-lo e
ao pressionar o botão de atualização, você deverá ver os
dados de previsão do tempo de uma semana de sua localização. Quando estiver funcionando, você pode
remover as instruções de log prolixas para não
atrapalhar os logs. Quando estiver trabalhando nesse
código, se você vir uma exceção de operação não suportada,
certifique-se de que quando criar os dados falsos
e inicializar o ArrayAdapter, você tenha passado
uma lista de strings e não um
array. Assim você pode chamar o método de limpeza
ou o método de adição nesta coleção de listas.
Из логов мы видим, что у нас
верные данные о погоде,
и они представлены в нужном формате —
в виде массива строк.
Пришло, наконец, время доработать UI.
Вспомните, что AsyncTasks способны
передавать данные
обратно в основной поток.
Вы можете нажать Ctrl+O, чтобы
увидеть список доступных методов,
которые можно переопределить в AsyncTask.
Нажав на любой из них,
вы подставите его в ваш код.
Затем можно обновить ArrayAdapter,
используя новые данные,
которые были получены AsyncTask.
Небольшой совет: вы можете сделать
ForecastAdapter глобальной переменной
и таким образом выделить
её из FetchWeatherTask.
Убедитесь, что это не статический класс,
иначе вы не получите
доступ к его переменной
из фрагмента прогноза.
Продолжайте компилировать и собирать
приложение. Запустив и обновив его,
вы увидите данные о погоде на неделю
для вашего местоположения.
Если работает, вы можете удалить
подробное логирование,
чтобы не загромождать логи.
Если, работая над этим кодом,
вы увидите исключения
неподдерживаемых операций,
убедитесь в том что,
создавая псевдо-данные
и инициализируя ArrayAdapter, вы передаёте
список строк, а не массив.
Таким способом можно
вызвать метод очистки,
или метод добавления
к этому набору списков.
通过日志,我们可以知道天气预报数据是正确的,
并且格式也正确,这正是我们想要的
字符串数组。因此,终于是时候来更新
UI 了。回想 AsyncTasks 如何将数据
传递回主线程。你可以按 Ctrl+O 来查看可在
AsyncTask 中重写的可用方法列表。如果
你点击其中任意一个,它就会为你
预填写代码。然后,你可以用检索自 AsyncTask
的新数据来更新 ArrayAdapter。提示,你
可以将 ForecastAdapter 作为全局变量。这样,你
便可以在 FetchWeatherTask 内对其进行访问。请确保
这不是静态类,否则你将无法从
forecast fragment 访问成员变量。然后,继续
编辑和构建应用。运行应用时,
点击刷新按钮,便可看到
你所在位置一周的天气数据。一旦运行正常,你就可以
删除冗长的日志语句,让
日志看起来井然有序。在你编写代码时,
如果你看到 UnsupportedOperationException,
请确保你正在创建假数据,
在对 ArrayAdapter 进行初始化时,你传入的
是字符串列表,而非
数组。这样,你便可在此列表集合中调用
clear 方法或 add 方法