Re: Урок 88. AsyncTask. Итоговый результат. Метод get
Добавлено: 09 сен 2014, 17:41
Разобрался, там идёт обратная связь
Добро пожаловать на форум сайта
http://forum.startandroid.ru/
Код: Выделить всё
GetData gt = new GetData();
gt.execute("http://somediary.ru/get_washes.php?_mode=checkStatus&a1="+Integer.toString(idWash));
try {
res="-11";
res = gt.get(7, TimeUnit.SECONDS);
Log.d(LOG_TAG,res);
if (TextUtils.equals(res, "0") ) {
Log.d(LOG_TAG,"свободно, записываемся");
gt = null;
GetData upgt =new GetData();
upgt.execute("http://somediary.ru/get_washes.php?_mode=tryToWash&a1="+Integer.toString(idWash) );
res = upgt.get(7, TimeUnit.SECONDS);
Log.d(LOG_TAG,"вышли, результат = "+res);
...
Код: Выделить всё
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
//Передаем в параметре Context context, DB db, int loaderIDPar
return new MyCursorLoader(this, db, id);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
scAdapterTableInfo.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
Код: Выделить всё
public class MyCursorLoader extends CursorLoader {
DB db;
int loaderID;
Cursor cursor;
MainActivity mainActivity = new MainActivity();
public MyCursorLoader(Context context, DB db, int loaderIDPar) {
super(context);
this.db = db;
this.loaderID = loaderIDPar;
}
@Override
public Cursor loadInBackground() {
//С помощью id понимаем какой лоадер запрашивается и возвращаем нужный курсор
if (loaderID == Constants.LOADER_ID_TABEL_INFO) {
String date = mainActivity.getMainDate();
try {
cursor = db.getJoinData(date);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else if (loaderID == Constants.LOADER_ID_TABEL_CATEGORY) {
cursor = db.getAllData(db.TABLE_CATEGORY_NAME);
}
return cursor;
}
}
Код: Выделить всё
// получить данные из связных таблиц
public Cursor getJoinData(String date) throws ExecutionException, InterruptedException {
//Формируем общую таблицу
String table = TABLE_INFO_NAME + " inner join " + TABLE_CATEGORY_NAME + " on "
+ TABLE_INFO_NAME + "." + INFO_TABLE_CATEGORY_ID + " = "
+ TABLE_CATEGORY_NAME + "." + CATEGORY_TABLE_ID;
//Формируем столбцы
//ОБЯЗАТЕЛЬНО НАДО СДЕЛАТЬ ОДНО ПОЛЕ С ПОМОЩЬЮ ALIASA "_id" - особенность SimpleCursorAdapter
String[] columns = {TABLE_INFO_NAME + "." + INFO_TABLE_ID,
TABLE_INFO_NAME + "." + INFO_TABLE_INFO,
TABLE_INFO_NAME + "." + INFO_TABLE_SUMM,
TABLE_INFO_NAME + "." + INFO_TABLE_CURRENCY,
TABLE_INFO_NAME + "." + INFO_TABLE_DATE,
TABLE_CATEGORY_NAME + "." + CATEGORY_TABLE_NAME};
myTask = new MyTask();
myTask.execute(date, table, columns);
return myTask.get();
Код: Выделить всё
private class MyTask extends AsyncTask<String[], Void, Cursor> {
String table;
String [] colums;
String date;
@Override
protected Cursor doInBackground(String[]... date) {
return mDB.query(table, colums, INFO_TABLE_DATE + "= ?", new String[]{this.date}, null, null, null);
}
@Override
protected void onPostExecute(Cursor cursor) {
super.onPostExecute(cursor);
}
public void execute(String date, String table, String[] colums) {
this.date = date;
this.table = table;
this.colums = colums;
}
}