Update TextView fields in onPostExecute()

两盒软妹~` 提交于 2020-01-14 06:47:36

问题


I'm parsing weather data in AsyncTask's doInBackground() method and storing parsed data in strings:

protected Void doInBackground(Void... params) {

...
Element element = (Element) list.item(i);
 if (element.getNodeName().equals("station_id")){
    String stationId = element.getTextContent();
   } else if (element.getNodeName().equals("observation_time") ){
    String observationTime = element.getTextContent();
...  

I have 2 TextViews in my UI. How do I update them in onPostExecute() with stationId and observationTime strings?


回答1:


Change your doInBackground return type to Element from Void. Now in onPostExecute you will get object of Element. Use this object to extract values and set into TextViews.

public class YourTask extends AsyncTask<Void, Void, Element> {

   TextView textView1, textView2;

   public YourTask (TextView textView1, TextView textView2) {
       this.textView1 = textView1;
       this.textView2 = textView2;
   }

   @Override
   protected Element doInBackground(Void... params) {
      ...
      Element element = (Element) list.item(i);
      return element;
   }

   @Override
   protected void onPostExecute(Element element) {
      if (element.getNodeName().equals("station_id")){
         String stationId = element.getTextContent();
         textView1.setText(stationId);
      } else if (element.getNodeName().equals("observation_time") ){
         String observationTime = element.getTextContent();
         textView2.setText(observationTime );
      } 
   }
}


来源:https://stackoverflow.com/questions/35193069/update-textview-fields-in-onpostexecute

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!