Получение информации из базы данных SQLite: заполнение уже заполненных полей и обновление строки - PullRequest
0 голосов
/ 25 января 2011

проверил много других вопросов и сайтов, не смог найти то, что искал.Я делаю список контактов для практики ... я пытаюсь дать пользователю возможность обновить информацию о контакте.Когда они нажимают на контакт, поля должны быть заполнены, как они уже есть, а не быть пустым с подсказкой.Проблема теперь в том, что поля не заполнены, все остальное работает просто отлично, но все поля просто содержат подсказки вместо текста, который пользователь заполнил для контакта при создании.Вот код:

Код ContacList.class ...

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        mDbAdapter = new TagDBAdapter(this);
        mDbAdapter.open();
        Cursor cursor = mCursor;
        cursor.moveToPosition(position);
        Intent intent = new Intent(this, AddEditContact.class);
        intent.putExtra(TagDBAdapter.KEY_ROWID, id);
        startActivityForResult(intent, ACTIVITY_EDIT);
    }

Код для AddEditContact.class

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.initLayout();
        mDbAdapter = new TagDBAdapter(this);
        mDbAdapter.open();
        Bundle extras = getIntent().getExtras();
        mRowId = extras.getLong(TagDBAdapter.KEY_ROWID);
        if(mRowId != null) {
            mContact = mDbAdapter.fetchContact(mRowId);
            m_firstNameEditE.setText(mContact.getFirstName());
            m_lastNameEditE.setText(mContact.getLastName());
            m_phoneNumberEdit.setText(mContact.getPhoneNumber());
            m_emailEditE.setText(mContact.getEmail());
            m_homePhoneEditE.setText(mContact.getHomePhone());
            m_workPhoneEditE.setText(mContact.getWorkPhone());
        }
    }

Получить код контакта

Вот код для fetchContact ()

public Contact fetchContact(long rowId) throws SQLException {
        Contact contact = new Contact();
        Cursor mCursor = 
            mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_FIRSTNAME, KEY_LASTNAME, KEY_NAME, KEY_NUMBER, 
                    KEY_EMAIL, KEY_HOMEPHONE, KEY_WORKPHONE}, KEY_ROWID + "=" + rowId, null, null, null, null, null);
        if(mCursor != null) {
            mCursor.moveToFirst();
        }
        while(mCursor.moveToNext()) {
            contact.setFirstName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_FIRSTNAME)));
            contact.setLastName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_LASTNAME)));
            contact.setName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_NAME)));
            contact.setPhoneNumber(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_NUMBER)));
            contact.setEmail(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_EMAIL)));
            contact.setHomePhone(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_HOMEPHONE)));
            contact.setWorkPhone(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_WORKPHONE)));
        }
        return contact;
    }

Итак, я получаю дополнительные данные из намерения и получаю KEY_ROWID, и, если он не нулевой, задаю текст EditTexts для получателейдля объекта контакта, который я получил из класса fetchContact (long rowId), который возвращает объект Contact.Затем я устанавливаю все EditTexts для их соответствующих получателей.Но когда в действии, как я уже сказал, он просто оставляет все поля пустыми, с одним лишь подсказкой.

Есть ли что-то, что я здесь упускаю?Большое спасибо.

Одна потенциальная проблема, о которой я подумал, состояла в том, что у меня есть два намерения, которые запрашивают результат от этого действия, одно для ACTIVITY_CREATE и одно для ACTIVITY_EDIT.Может быть, это неправильное намерение.

1 Ответ

0 голосов
/ 25 января 2011

Вы пробовали отладку или, по крайней мере, добавили Log.d () в свой код для распечатки значений?

Ваш mDbAdapter написан вами?Может быть, что-то не так с fetchContact () ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...