Мое приложение, над которым я работаю, представляет собой набор заметок, организованных Контактами.У меня проблема с использованием курсора для запроса базы данных для правильных строк информации.Основным видом деятельности является список контактов на основе URI контактов.Щелчок по контакту передает Контакт _ID в виде строки намерения.Я хочу передать строку в курсор, чтобы отобразить только те строки, где ключ contactId совпадает со строкой намерения, но каждый раз, когда я передаю строку, я получаю «NumberFormatException: невозможно проанализировать« ноль »как целое число».Я знаю, что намерение проходит, потому что я создал пункт меню, который выдает тостовое сообщение со строкой намерения, которое работает каждый раз, и курсор работает, когда жестко кодирует аргумент с идентификатором.Я просто не могу понять, где что-то идет не так!Я работаю с Android всего полторы недели, так что это может быть что-то очень простое.Любая помощь очень ценится.Мой код ниже.
Это действие, которое должно отображать отфильтрованные строки данных:
public class NotesList extends ListActivity {
public MyDbAdapter db;
public String mIntentString, contactId;
public int mIntentInt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
db = new MyDbAdapter(this);
db.open();
fillData();
Bundle extras = getIntent().getExtras();
mIntentString = extras.getString("contactId");
contactId = extras.getString("contactId");
}
private void fillData() {
Cursor mCursor = db.fetchNotesForContact(contactId);
startManagingCursor(mCursor);
ListAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.two_line_list_item,
mCursor,
new String[] {MyDbAdapter.KEY_TITLE, MyDbAdapter.KEY_DATETIME},
new int[] {android.R.id.text1, android.R.id.text2});
setListAdapter(adapter);
}
И это код для вызываемого курсора, и при изменении аргумента из«contactId», чтобы сказать «139», что записи контактов возвращаются:
public Cursor fetchNotesForContact(String contactId) {
String[] columns = {KEY_ROWID, KEY_CONTACTID, KEY_TITLE, KEY_BODY, KEY_DATETIME};
String projection = ("contactId = ?");
String[] arguments = {contactId};
return mDb.query(DATABASE_TABLE, columns, projection, arguments, null, null, null);
}