为了账号安全,请及时绑定邮箱和手机立即绑定

如何将值从 AsyncTask 类的数组列表发送到 Android 中的另一个类?

如何将值从 AsyncTask 类的数组列表发送到 Android 中的另一个类?

慕娘9325324 2021-12-30 16:09:22
我有下一个问题,我尝试将Arraylist<string>值从 AsyncTask 类发送到其他类调用图形,但我不知道我做错了什么以及如何Arraylist<string>在另一个类中获取值,因为我的代码有很多 sintaxis 错误异步任务类public class fetch  extends AsyncTask<Void,Void,ArrayList<String>> {    //v funcional        @RequiresApi(api = Build.VERSION_CODES.KITKAT)        @Override        protected ArrayList<String> doInBackground(Void... voids) {                    String Id ="";                    String Time ="";                    String Pressure="";                    ArrayList<String> IdArray = new ArrayList<String>();                    ArrayList<String> TimeArray = new ArrayList<String>();                    ArrayList<String> PressureArray = new ArrayList<String>();                    String IdS=""+IdArray;                    String TimeS=""+TimeArray;                    String PresureS=""+PressureArray;                    data.set(1,TimeS);                    data.set(2,TimeS);                    data.set(3,TimeS);            return data;        }        @Override        protected void onPostExecute(ArrayList<String> result){            super.onPostExecute(result);            Graphics.data.setText(data);        }}图形类 public class Graphics extends AppCompatActivity {        public static TextView data;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.graphics);            Button firstButton = (Button) findViewById(R.id.json);            data = (TextView) findViewById(R.id.msgTxt);            firstButton.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    fetch process = new fetch();                   ArrayList<String> data= process.execute();                   data.get(1);                }            });    }
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以创建一个由您的“图形”实现的接口,并将其传递给您的AsyncTask班级。像这样


public interface BlaBlaBla {

    void doBla(ArrayList<String> myBla);

}

并在您的“图形”中:


class Graphics extends AppCompatActivity implements BlaBlaBla {

fetch process = new fetch(this);

}

对于 asyncClass :


public class fetch  extends AsyncTask<Void,Void,ArrayList<String>> {

 //constructor

BlaBlaBla bla;

public fetch(BlaBlaBla bla){

this.bla=bla;

}

//when your task is complete use bla.doBla(pass your array here);

}


查看完整回答
反对 回复 2021-12-30
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我的解决方案 Fetch 类


public class Fetch  extends AsyncTask<Void,Void,String[][]> {

    public static int KEY = 0;

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)

        @Override

     protected String[][] doInBackground(Void... voids) {

          HttpHandler sh = new HttpHandler();

           String url = "http:xxxxxxx/xxx.json";

           String jsonStr = sh.makeServiceCall(url);

           JSONObject jsonObj = null;

            try {

                jsonObj = new JSONObject(jsonStr);

                int nTiempos=jsonObj.length();

                String[] IdKeyArray = new String[nTie];

        for (int i = 0; i < jsonObj.length(); i++) {

                  JSONObject c = jsonObj.getJSONObject(String.valueOf(i));

                  IdKeyArray[i] = c.getString("Key");

                  String[][] valores={IdKeyArray};

                return valores;

            } catch (JSONException e) {

            e.printStackTrace();

        }

       return null;

   }

}

这是我获取值的另一个类的“调用”


private String[][] valores;

Fetch process = new Fetch();

  process.execute();

   try {

      valores=process.get();

     } catch (ExecutionException e) {

        e.printStackTrace();

      } catch (InterruptedException e) {

        e.printStackTrace();

      }

      pm.setText(String.valueOf(valores[Fetch.Key][0]));

   }

  }

}


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号