Я пытаюсь сохранить значения в моей БД, и я использую AsyncTask для выполнения этого процесса. Я вынимаю данные с веб-сервера и сохраняю их БД, отправив массив Json в async, а затем извлекая значение и сохраняя их. Я настраиваю это на Loop.Asynctask: два значения для AsyncTask и процесс в doInBackground
Теперь у этих записей иногда есть подзаголовки. Определить подзаголовки в моем localDB. Я добавляю другое поле с именем parentID, поэтому я пытаюсь отправить parentID вместе с jsonarray в AsyncTask. Я не уверен, как это сделать?
Вот что я сделал до сих пор:
private void getSubRecords(String recordID2)
{
final String parent_ID = recordID2;
final RequestParams requestParams = new RequestParams();
requestParams.put("RecId", recordID2);
final String urlforsubrec = getResources().getString(R.string.subreclink);
AsyncHttpClient client = new AsyncHttpClient();
client.post(urlforsubrec , requestParams, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
try {
success = response.getInt(TAG_SUCCESS);
if (success == Integer.parseInt(getResources().getString(R.string.successvalue))) {
details = response.getJSONArray(TAG_DETAIL);
new AddSubRecordAsyncTask().execute(details); //Need to send parentID String
Я хочу отправить PARENT_ID вместе с деталями (JsonArray)? как это сделать, чтобы отразить в AsyncTask?
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
Log.e("Error","Check internet"); }
});
}
Вот AsyncTask (Не уверен, что нужно изменить, чтобы услышать, чтобы отразить как JsonArray и String.
private class AddSubRecAsyncTask extends AsyncTask<JSONArray, Void, String>
{
@Override
protected String doInBackground(JSONArray... params)
{
for (int i = 0; i < params[0].length(); i++)
{
try
{
JSONObject c = details.getJSONObject(i);
riD = c.getString(TAG_RID);
rnAme = c.getString(TAG_RNAME);
rcHild = c.getString(TAG_RCHILD);
localDB.setSubRecDetails(riD, rnAme, rcHild, rcAtegory, parent_ID);
if (rcHild.equalsIgnoreCase(getResources().getString(R.string.subvalue))) {
getSubRecords(riD);
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
return null;
}
protected void onPostExecute(String object)
{
Log.e("All", "Done");
}
}
}
Я хочу отправить JsonArray (в моем коде выше «детали») и строки значение (pARENT_ID), как это конечное значение ..
не знаете, как идти об этом?
Спасибо за быстрый ответ. Я попробую ваш код. проект успешно работал до сохранения в db. При сохранении базы данных я получаю следующую ошибку. У меня есть это в цикле For. Вызывается: java.lang.IllegalStateException: не удается выполнить эту операцию, потому что пул соединений был закрыт. –
Это отдельный вопрос. Вы закрываете базу данных в цикле? Если да, то нет. – iagreen
Я не закрываю базу данных в цикле. У меня есть SQLiteOpenHelper, и я называю это ... Он закрывается каждый раз после записи. –