Урок 136. CursorLoader
Re: Урок 136. CursorLoader
Пытаюсь применить этот урок к своему проекту. У меня тоже не получается победить getSupportLoaderManager().initLoader(0, null, this); Хоть убей подчеркивает его красным. Поддержку compile 'com.android.support:support-v4:21.+' добавил, в импорте указал:
import android.app.Activity;
import android.app.DialogFragment;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SeekBar;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.TextView;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
Что ему еще надо?
import android.app.Activity;
import android.app.DialogFragment;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SeekBar;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.TextView;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
Что ему еще надо?
Re: Урок 136. CursorLoader
я же говорю унаследуй свое активити не от класса Activity, а от FragmenActivity из support lib:
[syntax=java]public class MainActivity extends FragmentActivity [/syntax]
[syntax=java]public class MainActivity extends FragmentActivity [/syntax]
Re: Урок 136. CursorLoader
Да, уже прочитал Ваше сообщение, спасибо, помогло
Re: Урок 136. CursorLoader
А подскажите еще пожалуйста, как обработать нажатие на элемент списка? Активити назначил слушателем AdapterView.OnItemClickListener, затем на список повесил слушателя rdlistview.setOnItemClickListener(this); ну и система сама создала
Однако при нажатии на элемент списка в лог ничего не выводится.
Влияет ли как-то на это событие то, что ListView создается на основе самописного layout?
Код: Выделить всё
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(LOG_TAG, "-------------Clicked----------------");
}
Влияет ли как-то на это событие то, что ListView создается на основе самописного layout?
Re: Урок 136. CursorLoader
Вопрос снят, какая-то проблема с layout файлом была, создал заново и все заработало
Re: Урок 136. CursorLoader
Всем привет!
Я так понимаю, все обращения к БД нужно делать в отдельном от UI потоке (особенно много времени у меня занимает большой update).
В уроке показано, как через CursorLoader получать cursor после sql query и как "апдейтить" cursor после операции delete. Query при этом правильно делается в отдельном потоке.
А как в отедельном потоке делать остальные операции с БД - update, delete, insert?
Там будет другой Loader?
Я так понимаю, все обращения к БД нужно делать в отдельном от UI потоке (особенно много времени у меня занимает большой update).
В уроке показано, как через CursorLoader получать cursor после sql query и как "апдейтить" cursor после операции delete. Query при этом правильно делается в отдельном потоке.
А как в отедельном потоке делать остальные операции с БД - update, delete, insert?
Там будет другой Loader?
Arbeit macht Fry
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
В смысле insert )
Ну не важно ) В общем, вопрос про операции sql insert, update, delete. Как их лучше вывести в другой поток через loader?
Код: Выделить всё
ContentValues cv = new ContentValues();
for (int i = 0; i < 2000; i++) {
cv.put(COLUMN_TEXT, "Запись № " + i);
mDB.insert(TABLE_NAME, null, cv);
}
Arbeit macht Fry
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
static соединение. (перед юзом проверяй на нул).Fry писал(а):В смысле insert )
Ну не важно ) В общем, вопрос про операции sql insert, update, delete. Как их лучше вывести в другой поток через loader?Код: Выделить всё
ContentValues cv = new ContentValues(); for (int i = 0; i < 2000; i++) { cv.put(COLUMN_TEXT, "Запись № " + i); mDB.insert(TABLE_NAME, null, cv); }
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 136. CursorLoader
Foenix писал(а): а вообще для операций с бд нужно использовать контент-провайдер
А что даст контент-провайдер?
Как его использование решит проблемы вывода операций из UI потока?
Arbeit macht Fry
Re: Урок 136. CursorLoader
Провайдер нужен для шаринга данных другим приложениям.Fry писал(а):Foenix писал(а): а вообще для операций с бд нужно использовать контент-провайдер
А что даст контент-провайдер?
Как его использование решит проблемы вывода операций из UI потока?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 136. CursorLoader
Приложения в разных процессах работают, соответственно и с разными потоками.Fry писал(а):Это - одна из фич ) Но вопрос был не в этом.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 136. CursorLoader
А если у меня одно приложение, и в нем реализуется ContentProvider - тогда процессы тоже разные?doter.ua писал(а): Приложения в разных процессах работают, соответственно и с разными потоками.
Arbeit macht Fry
Re: Урок 136. CursorLoader
Это просто самый лучший и современный подход, ничего сложного нету в его реализации. А для вставки записей используй просто асинктаск или thread - что тут сложногоFry писал(а):Foenix писал(а): а вообще для операций с бд нужно использовать контент-провайдер
А что даст контент-провайдер?
Как его использование решит проблемы вывода операций из UI потока?
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
Контент провайдер, вернее ContenResolver работает в том же потоке, что и вызывающий поток.Fry писал(а):А если у меня одно приложение, и в нем реализуется ContentProvider - тогда процессы тоже разные?doter.ua писал(а): Приложения в разных процессах работают, соответственно и с разными потоками.
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
А какой-либо Loader стоит использовать?Foenix писал(а): Это просто самый лучший и современный подход, ничего сложного нету в его реализации. А для вставки записей используй просто асинктаск или thread - что тут сложного
Arbeit macht Fry
Re: Урок 136. CursorLoader
конечно нужно! если ты грузишь данные - то используй лоадер,
если вставка - транзакция обязательная для множественной ставки - раз, и
http://developer.android.com/reference/ ... ndler.html
попробуй это использовать для одиночных вставок
если вставка - транзакция обязательная для множественной ставки - раз, и
http://developer.android.com/reference/ ... ndler.html
попробуй это использовать для одиночных вставок
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
Foenix, не очень тебя понял тут.
И сорри за глупый вопрос . Ты прод транзакикциями понимаешь это?
И почему Content Resolvers стоит использовать для одиночных вставок, а не для множественных?
Что использовать для транзакций?Foenix писал(а): если вставка - транзакция обязательная для множественной ставки - раз,
И сорри за глупый вопрос . Ты прод транзакикциями понимаешь это?
Код: Выделить всё
query = "Insert into " +TABLE_NAME+ "("+ COLUMN_TEXT + ") VALUES ('Запись № " + i + "')";
mDB.execSQL (query);
Arbeit macht Fry