[英]How to send values from an arraylist from AsyncTask class to another class in Android?
我有下一个问题,我试图将Arraylist<string>
值从AsyncTask类发送到其他类调用图形,但是我不知道我做错了什么以及如何在另一个类中获取Arraylist<string>
值,因为我有我的代码有很多sintaxis错误
AsyncTask类
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);
}
});
}
您可以创建一个接口,您的“图形”将实现该接口,并将其传递给您的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);
}
我的解决方案获取类
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]));
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.