Урок 52. SimpleCursorAdapter, пример использования
Re: Урок 52. SimpleCursorAdapter, пример использования
понимаю что текст нужно извлекать из БД, а не адаптера. но как связать использованный в примере acmi.id c курсором, и в курсоре отобрать требуемое поле не понимаю
Re: Урок 52. SimpleCursorAdapter, пример использования
а это есть в уроках
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: Урок 52. SimpleCursorAdapter, пример использования
кроме того это тут очень часто задаваемый вопрос!
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: Урок 52. SimpleCursorAdapter, пример использования
бла блаdimitrius писал(а):понимаю что текст нужно извлекать из БД, а не адаптера. но как связать использованный в примере acmi.id c курсором, и в курсоре отобрать требуемое поле не понимаю
db.query ( ... where _id = acm.id ... )
бла бла
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 52. SimpleCursorAdapter, пример использования
НЕТ.doter.ua писал(а):бла блаdimitrius писал(а):понимаю что текст нужно извлекать из БД, а не адаптера. но как связать использованный в примере acmi.id c курсором, и в курсоре отобрать требуемое поле не понимаю
db.query ( ... where _id = acm.id ... )
бла бла
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: Урок 52. SimpleCursorAdapter, пример использования
уважаемая Phoenix уделите минуточку пожалуйста
Во втором пункте меню нужно извлечь текст из поля TABLE_EMAIL.
Для последующей отправки. Для этого будем использовать метод getEmail().
Описывать его будем в DB.java
привожу код метода sendEmail() из класса DB
String to = null описана там где все константы; после нажатия в контекстном меню "Отправить письмо" приложение слетает и выдает следующий лог:
уважаемая Phoenix укажите пожалуйста где исправить ошибку
Во втором пункте меню нужно извлечь текст из поля TABLE_EMAIL.
Для последующей отправки. Для этого будем использовать метод getEmail().
Описывать его будем в DB.java
Код: Выделить всё
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, 1, 0, "Удалить запись");
menu.add(0, 2, 0, "Отправить письмо");
}
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == 1) {
// получаем из пункта контекстного меню данные по пункту списка
AdapterContextMenuInfo acmi =
(AdapterContextMenuInfo) item.getMenuInfo();
// извлекаем id записи и удаляем соответствующую запись в БД dbh
dbh.delRec(acmi.id);
// обновляем курсор
cursor.requery();
return true;
}
if (item.getItemId() == 2) {
AdapterContextMenuInfo acmi =
(AdapterContextMenuInfo) item.getMenuInfo();
// вызываем Intent для отправки почты
Intent Emailintent = new Intent(Intent.ACTION_SEND);
Emailintent.setData(Uri.parse("mailto:"));
String[] to={dbh.sendEmail(acmi.id)};
Emailintent.putExtra(Intent.EXTRA_EMAIL, to);
Emailintent.putExtra(Intent.EXTRA_SUBJECT, " ");
Emailintent.putExtra(Intent.EXTRA_TEXT, " ");
Emailintent.setType("message/rfc822");
startActivity(Intent.createChooser(Emailintent, "Email"));
return true;
}
return super.onContextItemSelected(item);
}
Код: Выделить всё
public String sendEmail(long idd){
Cursor c = mDB.query(DB_TABLE, new String[] {TABLE_EMAIL}, null, null, null, null, null);
if (c.moveToFirst()) {
int emailColIndex = c.getColumnIndex(TABLE_EMAIL);
long id = c.getInt(c.getColumnIndex(TABLE_ID));
do { if(idd==id) to = c.getString(emailColIndex);
} while (c.moveToNext());
} return to;
}
Код: Выделить всё
java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
Re: Урок 52. SimpleCursorAdapter, пример использования
Как подметила феникс: "в БД я нуп и бревно", но даже мне очевидно, что поиск записи в столбце с индексом -1 должен приводить к ошибке. Couldn't read row 0, col -1 from CursorWindow,
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 52. SimpleCursorAdapter, пример использования
Это понятно что столбца -1 не существует, подскажи что исправить, где копать. А то с виду все правильно
Re: Урок 52. SimpleCursorAdapter, пример использования
вот код DB.java
а вот код Activity
Код: Выделить всё
package com.example.userdatabase;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DB {
private static final String DB_NAME = "mydbase";
private static final int DB_VERSION = 1;
private static final String DB_TABLE = "mytable";
public static final String TABLE_ID = "_id";
public static final String TABLE_LOGIN = "login";
public static final String TABLE_PASSWORD = "password";
public static final String TABLE_NAME = "name";
public static final String TABLE_EMAIL = "email";
public static final String TABLE_PHONE = "phone";
public static final String TABLE_WWW = "www";
String to = null;
private static final String DB_CREATE = "create table " + DB_TABLE + "("
+ TABLE_ID + " integer primary key autoincrement, "
+ TABLE_LOGIN + " text, " + TABLE_PASSWORD + " text, "
+ TABLE_NAME + " text, " + TABLE_EMAIL + " text, "
+ TABLE_PHONE + " text, " + TABLE_WWW + " text" + ");";
private final Context mCtx;
private DBHelper mDBHelper;
private SQLiteDatabase mDB;
public DB(Context ctx) {
mCtx = ctx;
}
// открыть подключение
public void open() {
mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
mDB = mDBHelper.getWritableDatabase();
}
// закрыть подключение
public void close() {
if (mDBHelper != null)
mDBHelper.close();
}
// получить все данные из таблицы DB_TABLE
public Cursor getAllData() {
return mDB.query(DB_TABLE, null, null, null, null, null, null);
}
// добавить запись в DB_TABLE
public void addRec(String txt_login, String txt_password, String txt_name,
String txt_email, String txt_phone, String txt_www) {
ContentValues cv = new ContentValues();
cv.put(TABLE_LOGIN, txt_login);
cv.put(TABLE_PASSWORD, txt_password);
cv.put(TABLE_NAME, txt_name);
cv.put(TABLE_EMAIL, txt_email);
cv.put(TABLE_PHONE, txt_phone);
cv.put(TABLE_WWW, txt_www);
mDB.insert(DB_TABLE, null, cv);
}
// удалить запись из DB_TABLE
public void delRec(long id) {
mDB.delete(DB_TABLE, TABLE_ID + " = " + id, null);
}
public String sendEmail(long idd){
Cursor c = mDB.query(DB_TABLE, new String[] {TABLE_EMAIL}, null, null, null, null, null);
if (c.moveToFirst()) {
int emailColIndex = c.getColumnIndex(TABLE_EMAIL);
long id = c.getInt(c.getColumnIndex(TABLE_ID));
do { if(idd==id) to = c.getString(emailColIndex);
} while (c.moveToNext());
} return to;
}
// класс по созданию и управлению БД
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
// создаем и заполняем БД
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
Код: Выделить всё
package com.example.userdatabase;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.AdapterView.AdapterContextMenuInfo;
public class TwoActivity extends Activity implements OnClickListener{
TextView txLogin, txPassword, txName, txEmail, txPhone, txWWW;
String login, password, name, email, phone, www;
Button btnConfirm, btnEdit;
ListView lvData;
DB dbh;
SimpleCursorAdapter scAdapter;
Cursor cursor;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.two);
txLogin = (TextView) findViewById(R.id.txLogin);
txPassword = (TextView) findViewById(R.id.txPassword);
txName = (TextView) findViewById(R.id.txName);
txEmail = (TextView) findViewById(R.id.txEmail);
txPhone = (TextView) findViewById(R.id.txPhone);
txWWW = (TextView) findViewById(R.id.txWWW);
btnConfirm = (Button) findViewById(R.id.btnConfirm);
btnConfirm.setOnClickListener(this);
Intent intent1 = getIntent();
String Sicore1 = intent1.getStringExtra("Login");
String Sicore2 = intent1.getStringExtra("Password");
String Sicore3 = intent1.getStringExtra("Name");
String Sicore4 = intent1.getStringExtra("Email");
String Sicore5 = intent1.getStringExtra("Phone");
String Sicore6 = intent1.getStringExtra("WWW");
txLogin.setText(Sicore1);
txPassword.setText(Sicore2);
txName.setText(Sicore3);
txEmail.setText(Sicore4);
txPhone.setText(Sicore5);
txWWW.setText(Sicore6);
// открываем подключение к БД
dbh = new DB(this);
dbh.open();
// получаем курсор
cursor = dbh.getAllData();
startManagingCursor(cursor);
// формируем столбцы сопоставления
String[] from = new String[] { DB.TABLE_LOGIN, DB.TABLE_PASSWORD, DB.TABLE_NAME, DB.TABLE_EMAIL, DB.TABLE_PHONE, DB.TABLE_WWW };
int[] to = new int[] { R.id.tvText1, R.id.tvText2, R.id.tvText3, R.id.tvText4, R.id.tvText5, R.id.tvText6 };
// создаем адаптер и настраиваем список
scAdapter = new SimpleCursorAdapter(this, R.layout.items, cursor, from, to);
lvData = (ListView) findViewById(R.id.lvData);
lvData.setAdapter(scAdapter);
// добавляем контекстное меню к списку
registerForContextMenu(lvData);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()) {
case R.id.btnConfirm:
login = txLogin.getText().toString();
password = txPassword.getText().toString();
name = txName.getText().toString();
email = txEmail.getText().toString();
phone = txPhone.getText().toString();
www = txWWW.getText().toString();
// добавляем запись
dbh.addRec(login, password, name, email, phone, www);
// обновляем курсор
cursor.requery();
break;
}
}
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, 1, 0, "Удалить запись");
menu.add(0, 2, 0, "Отправить письмо");
}
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == 1) {
// получаем из пункта контекстного меню данные по пункту списка
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
// извлекаем id записи и удаляем соответствующую запись в БД
dbh.delRec(acmi.id);
// обновляем курсор
cursor.requery();
return true;
}
if (item.getItemId() == 2) {
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
// вызываем Intent для отправки почты
Intent Emailintent = new Intent(Intent.ACTION_SEND);
Emailintent.setData(Uri.parse("mailto:"));
String[] to={dbh.sendEmail(acmi.id)};
Emailintent.putExtra(Intent.EXTRA_EMAIL, to);
Emailintent.putExtra(Intent.EXTRA_SUBJECT, " ");
Emailintent.putExtra(Intent.EXTRA_TEXT, " ");
Emailintent.setType("message/rfc822");
startActivity(Intent.createChooser(Emailintent, "Email"));
return true;
}
return super.onContextItemSelected(item);
}
protected void onDestroy() {
super.onDestroy();
// закрываем подключение при выходе
dbh.close();
}
}
Re: Урок 52. SimpleCursorAdapter, пример использования
номер строчки в которой ошибка, а лучше сразу кусок из LogCat
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 52. SimpleCursorAdapter, пример использования
Смотрите? вот таков наш Logcat
Код: Выделить всё
11-02 17:45:25.313: E/CursorWindow(1285): Failed to read row 0, column -1 from a CursorWindow which has 4 rows, 1 columns.
11-02 17:45:25.313: E/InputEventReceiver(1285): Exception dispatching input event.
11-02 17:45:25.317: E/MessageQueue-JNI(1285): Exception in MessageQueue callback: handleReceiveCallback
11-02 17:45:25.325: E/MessageQueue-JNI(1285): java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.database.CursorWindow.nativeGetLong(Native Method)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.database.CursorWindow.getLong(CursorWindow.java:507)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.database.CursorWindow.getInt(CursorWindow.java:574)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.example.userdatabase.DB.sendEmail(DB.java:82)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.example.userdatabase.TwoActivity.onContextItemSelected(TwoActivity.java:150)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.app.Activity.onMenuItemSelected(Activity.java:2552)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3601)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:924)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.widget.AbsListView.onTouchEvent(AbsListView.java:3541)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.View.dispatchTouchEvent(View.java:7127)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2170)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1905)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1925)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1379)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.app.Dialog.dispatchTouchEvent(Dialog.java:736)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1873)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.View.dispatchPointerEvent(View.java:7307)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3172)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3117)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4153)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4132)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4224)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.os.MessageQueue.nativePollOnce(Native Method)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.os.MessageQueue.next(MessageQueue.java:125)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.os.Looper.loop(Looper.java:124)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at android.app.ActivityThread.main(ActivityThread.java:4745)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at java.lang.reflect.Method.invokeNative(Native Method)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at java.lang.reflect.Method.invoke(Method.java:511)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-02 17:45:25.325: E/MessageQueue-JNI(1285): at dalvik.system.NativeStart.main(Native Method)
11-02 17:45:25.325: D/AndroidRuntime(1285): Shutting down VM
Re: Урок 52. SimpleCursorAdapter, пример использования
Всмысле я имел ввиду смотрите, вот такой наш Logcat)
Re: Урок 52. SimpleCursorAdapter, пример использования
посмотри создавшуюся таблицу, судя по логу, у тебя нет столбца _id
а может и есть,
и перед строчкой
if (c.moveToFirst()) {
хорошо бы проверять - есть ли вообще в результативном курсоре записи
а может и есть,
и перед строчкой
if (c.moveToFirst()) {
хорошо бы проверять - есть ли вообще в результативном курсоре записи
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: Урок 52. SimpleCursorAdapter, пример использования
Phoenix Вы просто Богиня))) сработало, просто при создании курсора для отправки смс во вкладку columns не добавил столбец из таблицы TABLE_ID :
Cursor c = mDB.query(DB_TABLE, new String[] {TABLE_ID, TABLE_EMAIL}, null, null, null, null, null); - вот так работает))))
Cursor c = mDB.query(DB_TABLE, new String[] {TABLE_ID, TABLE_EMAIL}, null, null, null, null, null); - вот так работает))))
Re: Урок 52. SimpleCursorAdapter, пример использования
и подскажите еще, реально ли из разных фрагментов одного Activity с помощью таких же методов (типа addRec(), delRec(), getAllData(), определенных в отдельном классе DB.java) реализовать в одном из фрагментов запись в базу а в другом из фрагментов - вывод данных базы (к примеру в виде списка)
Или для подобных задач обязателен Content Provider? спасибо)
Или для подобных задач обязателен Content Provider? спасибо)
Re: Урок 52. SimpleCursorAdapter, пример использования
Создаешь отдельный класс для ДБ (если раньше использовал вложенный)dimitrius писал(а):и подскажите еще, реально ли из разных фрагментов одного Activity с помощью таких же методов (типа addRec(), delRec(), getAllData(), определенных в отдельном классе DB.java) реализовать в одном из фрагментов запись в базу а в другом из фрагментов - вывод данных базы (к примеру в виде списка)
Или для подобных задач обязателен Content Provider? спасибо)
Теперь там, где нужен функционал (CRUD создание,удаление,вставка и т.д.) этого класса создаешь экземпляр MyDBClass db = new MyDBClass();
НУ у тебя он итак отдельно, поэтому просто в нужном месте должен быть создан екземпляр класса ДБ. Главное с транзакциями не начудить.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 52. SimpleCursorAdapter, пример использования
если оставлять старый вариант, лучше сделать синглтон со ссылкой на этот класс (я делала в классе application). Но по-моему это не совсем, долго меня мучило, что может где-то вылезти нехорошие вещи и я перешла на контент-провайдеры и не жалею об этом. Теперь это просто стандарт общения с бд. Если хотите дальше программировать - лучше разобраться с этим. В вебинаре я все главные моменты описывала.
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: Урок 52. SimpleCursorAdapter, пример использования
Так и чувствовал что предстоит) спасибо, а где вебинар можно послушать, посмотреть?
Re: Урок 52. SimpleCursorAdapter, пример использования
все ссылки в ветке этого форума R.id.team
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: Урок 52. SimpleCursorAdapter, пример использования
Список выведен путем выборки из БД.
Теперь элементы не удаляются через контекстное меню.
Предполагаю, что вопрос следует задать так:
if(cursorH.moveToPosition(что теперь должно быть здесь?)){
dbHistory.delete("tableHistory", "_id" + " = " + (и здесь?), null);//
Теперь элементы не удаляются через контекстное меню.
Код: Выделить всё
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == CM_DELETE_ID) {
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
if(cursorH.moveToPosition(acmi.position)){
dbHistory.delete("tableHistory", "_id" + " = " + (acmi.id), null);//
cursorH.requery();
}
return true;
}
return super.onContextItemSelected(item);
}
if(cursorH.moveToPosition(что теперь должно быть здесь?)){
dbHistory.delete("tableHistory", "_id" + " = " + (и здесь?), null);//