Ich habe eine Frage, die ich nicht lösen kann.Android - put Daten in Array in asynctask
Ich versuche, die 'Frage' und 'Antwort' in das 2D-Array zu bringen, aber es kann die Daten nicht in das 2D-Array in der asyncTask
einfügen.
Ich erwarte, dass ich die "Frage" und "Antwort" setzen kann, die JSON-Objekt in das 2D-Array bekommen. Und dann verwenden Sie das Array in OnCreate
Methode.
public class MainActivity extends Activity {
String[][] array = new String[10][4];
private TextView tvData;
int qnum = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
String quest;
String ans;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new JSONTask().execute("http://itdmoodle.hung0530.com/ptms/questions_ws.php");
Button btnNext = (Button) findViewById(R.id.btnNext);
tvData = (TextView) findViewById(R.id.textView);
for(int i=0;i<10;i++){
int z = i+1;
array[i][0] = String.valueOf(z);
}
quest = array[0][1];
ans = array[0][2];
tvData.setText(quest);
btnNext.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
}
});
}
public class JSONTask extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... params) {
HttpURLConnection conn = null;
BufferedReader reader = null;
try{
URL url = new URL(params[0]);
conn = (HttpURLConnection) url.openConnection();
conn.connect();
InputStream stream = conn.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line ="";
while((line = reader.readLine()) != null){
buffer.append(line);
}
String Json = buffer.toString();
JSONObject jsonObject = new JSONObject(Json);
JSONArray jsonArray = jsonObject.getJSONArray("Questions");
StringBuffer bufferQues = new StringBuffer();
StringBuffer bufferAns = new StringBuffer();
for(int i=0;i<jsonArray.length();i++) {
JSONObject otherJson = jsonArray.getJSONObject(i);
String question = otherJson.getString("question");
String answer = otherJson.getString("answer");
bufferQues.append(question);
bufferAns.append(answer);
array[i][1] = bufferQues.toString();
array[i][2] = bufferAns.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally{
if(conn != null){
conn.disconnect();
}
try{
if(reader != null){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result){
super.onPostExecute(result);
}
}
}
Es wäre besser, wenn Sie anstelle des Hochladens von Bildern Ihres Codes den Code eingeben. Der Editor bietet Formatierungsoptionen für Codes. –
Es tut mir leid, dass ich den Code nicht eingeben konnte, wenn ich eine Frage stelle –
Bearbeiten Sie Ihre Frage, entfernen Sie die Bilder, kopieren Sie Ihren Code, wählen Sie Ihren Code und klicken Sie Strg + k (cmd + k, wenn Sie verwenden Mac). –