Урок 136. CursorLoader
Re: Урок 136. CursorLoader
Доброго времени суток
Есть два ListView как организовать в фрагменте CursorLoader с загрузкой из двух таблиц.
Понял что надо инициализировать два лоадера с двумя id
в onCreatLoader получаем id проверяем что пришло и возвращаем нужный лоадер.
А как дальше процесс происходит?
Есть два ListView как организовать в фрагменте CursorLoader с загрузкой из двух таблиц.
Понял что надо инициализировать два лоадера с двумя id
в onCreatLoader получаем id проверяем что пришло и возвращаем нужный лоадер.
А как дальше процесс происходит?
Re: Урок 136. CursorLoader
тебе точно два курсора надо?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
А как потом определить какой адаптер прикручивать?
Re: Урок 136. CursorLoader
что значит "а как", я ж не такой вопрос задала. У тебя один список будет на экране или два
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
ок
дальше все просто - нужно лишь реализовать паттерн с лоадерами)
вебинар посмотри -там все есть, это раз.
при реализации из фрагментов - следи за правильными импортами - либо саппорт либа, либо обычная.
дальше все просто - нужно лишь реализовать паттерн с лоадерами)
вебинар посмотри -там все есть, это раз.
при реализации из фрагментов - следи за правильными импортами - либо саппорт либа, либо обычная.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
Вебинар про контент провайдеры?
Re: Урок 136. CursorLoader
да
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
посмотрел)))
Re: Урок 136. CursorLoader
Примерно так:
[syntax=java]@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
switch (arg0) {
case 0:
CursorLoader cl0 = new CursorLoader(getActivity(), uri, projection, selection, selectionArgs, sortOrder);
return cl0;
case 1:
CursorLoader cl1 = new CursorLoader(getActivity(), uri, projection, selection, selectionArgs, sortOrder);
return cl1;
default:
}
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor arg1) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(arg1);
break;
case 1:
adapter.swapCursor(arg1);
break;
default:
break;
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(null);
break;
case 1:
adapter.swapCursor(null);
break;
default:
break;
}
}[/syntax]
[syntax=java]@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
switch (arg0) {
case 0:
CursorLoader cl0 = new CursorLoader(getActivity(), uri, projection, selection, selectionArgs, sortOrder);
return cl0;
case 1:
CursorLoader cl1 = new CursorLoader(getActivity(), uri, projection, selection, selectionArgs, sortOrder);
return cl1;
default:
}
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor arg1) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(arg1);
break;
case 1:
adapter.swapCursor(arg1);
break;
default:
break;
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(null);
break;
case 1:
adapter.swapCursor(null);
break;
default:
break;
}
}[/syntax]
Re: Урок 136. CursorLoader
ты сам посмотри что ты написал
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
А что не так? Это ж примерно)))
Re: Урок 136. CursorLoader
[syntax=java]@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
CursorLoader cursorLoader = null;
switch (arg0) {
case 0:
cursorLoader = new CursorLoader(getActivity(), URI_TOOL, null, null, null, null);
break;
case 1:
cursorLoader = new CursorLoader(getActivity(), URI_DATA, null, null, null, null);
break;
default:
}
return cursorLoader;
}[/syntax]
Не ругайся)))
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
CursorLoader cursorLoader = null;
switch (arg0) {
case 0:
cursorLoader = new CursorLoader(getActivity(), URI_TOOL, null, null, null, null);
break;
case 1:
cursorLoader = new CursorLoader(getActivity(), URI_DATA, null, null, null, null);
break;
default:
}
return cursorLoader;
}[/syntax]
Не ругайся)))
Re: Урок 136. CursorLoader
Я фанат твоих вебинаров
Re: Урок 136. CursorLoader
так ты смотри же в предыдущем коде - сказал, что будет два списка, а сам пишешь adapter
и второй кусок то же самое.
и второй кусок то же самое.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
у меня пока один)alexmx писал(а):Я фанат твоих вебинаров
ридтим мне не доверяет - говорит кроме к.п. я не знаю ничего
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
Про адаптер я в курсе, я их не кастомизировал еще.
Ну значит фанат одного вебинарау меня пока один)
ридтим мне не доверяет - говорит кроме к.п. я не знаю ничего
Re: Урок 136. CursorLoader
В общем сделал лоадер:
[syntax=java]package ru.systemtehnolodgi.stav;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
public class Launcher extends Fragment implements LoaderCallbacks<Cursor>{
final static Uri URI_TOOL = Uri.parse("content://ru.htsprovider.htspdata/dataplasma");
static final Uri URI_DATA = Uri.parse("content://ru.htsprovider.htspdata/datatable");
static final String PARAMETR_NAME_PLASMA = "parameter_name_plasma";
static final String STRAIGHT_CUT = "straight_cut";
static final String OBLIQUE_CUT_TOP = "oblique_cut_top";
static final String OBLIQUE_CUT_LOWER = "oblique_cut_lower";
static final String MARKING = "marcing";
static final String PUNCHING = "punching";
static final String QUALITY_HOLE = "quality_hole";
public Launcher() {
}
LauncherToolAdapter adapter;
android.app.LoaderManager loaderManager;
private LoaderManager.LoaderCallbacks<Cursor> mCallbacks;
ListView lvTool;
ListView lvData;
TextView textView;
CursorLoader cursorLoader;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String[] from = new String[] { PARAMETR_NAME_PLASMA, STRAIGHT_CUT, OBLIQUE_CUT_TOP, OBLIQUE_CUT_LOWER, MARKING, PUNCHING, QUALITY_HOLE};
adapter = new LauncherToolAdapter(getActivity(), R.layout.item_tool, null, from, null);
lvTool = (ListView) getActivity().findViewById(R.id.lvLauncherTool);
//lvTool.setAdapter(adapter);
mCallbacks = this;
loaderManager = getActivity().getLoaderManager();
loaderManager.initLoader(0, null, mCallbacks);
//loaderManager.initLoader(1, null, mCallbacks);
View rootViewLauncher = inflater.inflate(R.layout.fragment_launcher, container, false);
return rootViewLauncher;
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
switch (id) {
case 0:
cursorLoader = new CursorLoader(getActivity(), URI_TOOL, null, null, null, null);
break;
case 1:
cursorLoader = new CursorLoader(getActivity(), URI_DATA, null, null, null, null);
break;
default:
break;
}
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(cursor);
break;
case 1:
adapter.swapCursor(cursor);
break;
default:
break;
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(null);
break;
case 1:
adapter.swapCursor(null);
break;
default:
break;
}
}
}
[/syntax]
Не проканал, лог:
05-14 15:39:48.679: E/AndroidRuntime(14349): FATAL EXCEPTION: main
05-14 15:39:48.679: E/AndroidRuntime(14349): java.lang.IllegalArgumentException: column 'parameter_name_plasma' does not exist
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:302)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:333)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.widget.SimpleCursorAdapter.swapCursor(SimpleCursorAdapter.java:345)
05-14 15:39:48.679: E/AndroidRuntime(14349): at ru.systemtehnolodgi.stav.Launcher.onLoadFinished(Launcher.java:80)
05-14 15:39:48.679: E/AndroidRuntime(14349): at ru.systemtehnolodgi.stav.Launcher.onLoadFinished(Launcher.java:1)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:482)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.app.LoaderManagerImpl$LoaderInfo.onLoadComplete(LoaderManager.java:450)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.Loader.deliverResult(Loader.java:143)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.CursorLoader.deliverResult(CursorLoader.java:113)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.CursorLoader.deliverResult(CursorLoader.java:43)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.AsyncTaskLoader.dispatchOnLoadComplete(AsyncTaskLoader.java:254)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.AsyncTaskLoader$LoadTask.onPostExecute(AsyncTaskLoader.java:91)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.AsyncTask.finish(AsyncTask.java:631)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.Handler.dispatchMessage(Handler.java:99)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.Looper.loop(Looper.java:137)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.app.ActivityThread.main(ActivityThread.java:4745)
05-14 15:39:48.679: E/AndroidRuntime(14349): at java.lang.reflect.Method.invokeNative(Native Method)
05-14 15:39:48.679: E/AndroidRuntime(14349): at java.lang.reflect.Method.invoke(Method.java:511)
05-14 15:39:48.679: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
Насколько я понял в адаптер попадает курсор который не имеет поля parameter_name_plasma
Почему такое может быть?
[syntax=java]package ru.systemtehnolodgi.stav;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
public class Launcher extends Fragment implements LoaderCallbacks<Cursor>{
final static Uri URI_TOOL = Uri.parse("content://ru.htsprovider.htspdata/dataplasma");
static final Uri URI_DATA = Uri.parse("content://ru.htsprovider.htspdata/datatable");
static final String PARAMETR_NAME_PLASMA = "parameter_name_plasma";
static final String STRAIGHT_CUT = "straight_cut";
static final String OBLIQUE_CUT_TOP = "oblique_cut_top";
static final String OBLIQUE_CUT_LOWER = "oblique_cut_lower";
static final String MARKING = "marcing";
static final String PUNCHING = "punching";
static final String QUALITY_HOLE = "quality_hole";
public Launcher() {
}
LauncherToolAdapter adapter;
android.app.LoaderManager loaderManager;
private LoaderManager.LoaderCallbacks<Cursor> mCallbacks;
ListView lvTool;
ListView lvData;
TextView textView;
CursorLoader cursorLoader;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String[] from = new String[] { PARAMETR_NAME_PLASMA, STRAIGHT_CUT, OBLIQUE_CUT_TOP, OBLIQUE_CUT_LOWER, MARKING, PUNCHING, QUALITY_HOLE};
adapter = new LauncherToolAdapter(getActivity(), R.layout.item_tool, null, from, null);
lvTool = (ListView) getActivity().findViewById(R.id.lvLauncherTool);
//lvTool.setAdapter(adapter);
mCallbacks = this;
loaderManager = getActivity().getLoaderManager();
loaderManager.initLoader(0, null, mCallbacks);
//loaderManager.initLoader(1, null, mCallbacks);
View rootViewLauncher = inflater.inflate(R.layout.fragment_launcher, container, false);
return rootViewLauncher;
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
switch (id) {
case 0:
cursorLoader = new CursorLoader(getActivity(), URI_TOOL, null, null, null, null);
break;
case 1:
cursorLoader = new CursorLoader(getActivity(), URI_DATA, null, null, null, null);
break;
default:
break;
}
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(cursor);
break;
case 1:
adapter.swapCursor(cursor);
break;
default:
break;
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
switch (loader.getId()) {
case 0:
adapter.swapCursor(null);
break;
case 1:
adapter.swapCursor(null);
break;
default:
break;
}
}
}
[/syntax]
Не проканал, лог:
05-14 15:39:48.679: E/AndroidRuntime(14349): FATAL EXCEPTION: main
05-14 15:39:48.679: E/AndroidRuntime(14349): java.lang.IllegalArgumentException: column 'parameter_name_plasma' does not exist
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:302)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:333)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.widget.SimpleCursorAdapter.swapCursor(SimpleCursorAdapter.java:345)
05-14 15:39:48.679: E/AndroidRuntime(14349): at ru.systemtehnolodgi.stav.Launcher.onLoadFinished(Launcher.java:80)
05-14 15:39:48.679: E/AndroidRuntime(14349): at ru.systemtehnolodgi.stav.Launcher.onLoadFinished(Launcher.java:1)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:482)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.app.LoaderManagerImpl$LoaderInfo.onLoadComplete(LoaderManager.java:450)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.Loader.deliverResult(Loader.java:143)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.CursorLoader.deliverResult(CursorLoader.java:113)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.CursorLoader.deliverResult(CursorLoader.java:43)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.AsyncTaskLoader.dispatchOnLoadComplete(AsyncTaskLoader.java:254)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.content.AsyncTaskLoader$LoadTask.onPostExecute(AsyncTaskLoader.java:91)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.AsyncTask.finish(AsyncTask.java:631)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.Handler.dispatchMessage(Handler.java:99)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.os.Looper.loop(Looper.java:137)
05-14 15:39:48.679: E/AndroidRuntime(14349): at android.app.ActivityThread.main(ActivityThread.java:4745)
05-14 15:39:48.679: E/AndroidRuntime(14349): at java.lang.reflect.Method.invokeNative(Native Method)
05-14 15:39:48.679: E/AndroidRuntime(14349): at java.lang.reflect.Method.invoke(Method.java:511)
05-14 15:39:48.679: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
Насколько я понял в адаптер попадает курсор который не имеет поля parameter_name_plasma
Почему такое может быть?
Re: Урок 136. CursorLoader
что у тебя в курсор выдается-то?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 136. CursorLoader
Задумался но не помогло)))