Java 如何将异步任务数据放入微调器?
我正在用我自己制作的一些API开发一个Android应用程序。我几乎完成了,但是我找不到将我得到的数据放在异步任务中的方法,也就是将我的json数据放在我的动态微调器中的方法 这是我的密码:Java 如何将异步任务数据放入微调器?,java,android,asynchronous,android-asynctask,Java,Android,Asynchronous,Android Asynctask,我正在用我自己制作的一些API开发一个Android应用程序。我几乎完成了,但是我找不到将我得到的数据放在异步任务中的方法,也就是将我的json数据放在我的动态微调器中的方法 这是我的密码: String example; static final String API_URL2 = "https://xxxxxxxx.xx"; //Start Used for spinner with different value and display String[] textfordropdown
String example;
static final String API_URL2 = "https://xxxxxxxx.xx";
//Start Used for spinner with different value and display
String[] textfordropdown = { "A",
"B",
"C",
};
String[] valueofdropdowtext =
{ "1",
"2",
"3",
};
Spinner spinnerdynamic;
一旦创建,我调用了我的异步任务,以查看是否显示了一些内容,以便正常工作:
new GetList().execute();
我也在这里创建了我的微调器
spinnerdynamic = (Spinner)findViewById(R.id.dynamic_spinner);
ArrayAdapter<String> adapter1 =
new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item, textfordropdown);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerdynamic.setAdapter(adapter1);
spinnerdynamic.setOnItemSelectedListener(onItemSelectedListener1);
以下是onItemSelectedListener1的函数:
OnItemSelectedListener onItemSelectedListener1 =
new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
example = String.valueOf(valueofdropdowtext[position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
};
这里是我的异步任务:
class GetList extends AsyncTask<Void, Void, String> {
protected void onPreExecute() {
}
protected String doInBackground(Void... urls) {
try {
URL url = new URL(API_URL2);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
bufferedReader.close();
return stringBuilder.toString();
} finally {
urlConnection.disconnect();
}
} catch (Exception e) {
Log.e("ERROR", e.getMessage(), e);
return null;
}
}
protected void onPostExecute(String response) {
if (response == null) {
response = "Une erreur c'est produite";
}
Log.i("INFO", response);
try {
JSONObject object = (JSONObject) new JSONTokener(response).nextValue();
JSONArray prestationlist = object.getJSONArray("WhatIWant");
//Permet de compter le nombre d'éléments dans le json array
int arrSize = prestationlist.length();
ArrayList<String> value = new ArrayList<String>(arrSize);
ArrayList<String> name = new ArrayList<String>(arrSize);
for(int i=0;i<arrSize;i++) {
object = prestationlist.getJSONObject(i);
value.add(object.getString("Value"));
name.add(object.getString("Text"));
//Here i've made some display to see if it works, i get the data.
responseView.setText(value.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
那么,如何将数据放入字符串[]textfordropdown或valueofdropdowntext中呢
非常感谢 创建一个字符串数组列表,并在文件顶部初始化它 并在微调器中使用该arraylist
adapter1 =
new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item, yourarraylist);
并将值添加到onPostExecute方法中的数组列表中
for(int i=0;i<arrSize;i++) {
object = prestationlist.getJSONObject(i);
value.add(object.getString("Value"));
name.add(object.getString("Text"));
//Here i've made some display to see if it works, i get the data.
yourarraylist.add(object.getString("Text"));
responseView.setText(value.toString());
}
adapter1.notifyDataSetChanged();
注意:您还需要在文件顶部初始化微调器适配器请参见。听起来是个好主意,但当我在arraylist中添加add时,会出现一个错误:无法解析addjava.lang.StringMethod addjava.lang.StringMethod我如何通过同样的操作来添加我的值?我想用我的新数组替换我的下拉文本[position]值。您需要维护另一个具有相同索引的字符串arraylist。这是什么意思?因为在我的微调器中,我可以选择我的值,但当我单击它时,似乎什么都没有选择,我需要用数组文本替换我的textfordropdown,所以这没关系,但我还需要用数组值替换我的valueofdropdowntext,这不起作用:/yourspinner.getSelectedItemPosition使用此选项,您将获得微调器选定项的索引。并且您可以在valuearraylist中为相同位置选择值。如果您也要维护valuearraylist。。