他の質問やウェブサイトが多数確認されていて、探しているものが実際に見つかりませんでした。私は練習のための連絡先リストを作っています...私がやっていることは、連絡先の情報を更新する機能をユーザに与えることです。連絡先をクリックすると、フィールドは既に入力されているように記入し、ヒントで空白にしないでください。問題は現在、フィールドにデータが入力されていないこと、他のすべては正常に機能しますが、作成時にユーザーが入力したテキストの代わりにすべてのフィールドにヒントがあることです。SQLiteデータベースからの情報取得:すでに入力されているフィールドを入力してローを更新する
ContacList.classのコード... 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());
}
}
取得接点コードここ
ため
@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);
}
コード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を取得しています。ヌルでない場合は、fetchContact(long rowId)クラスから取得した連絡先オブジェクトのgetterにEditTextsのテキストを設定します。 Contactオブジェクト次に、すべてのEditTextをそれぞれのゲッターに設定します。しかし、実際には、私が言ったように、ちょうどそこにヒントがあるだけで、すべてのフィールドが空白になります。
ここに何か不足していますか?どうもありがとう。
1つの潜在的な問題は、このアクティビティの結果を求める2つのインテントがあることです.1つはACTIVITY_CREATE、もう1つはACTIVITY_EDITです。多分それは間違った意図を得る。
ここにfetchContact()のコードがあります。 ここには当てはまらないので、元の質問テキストに入れてください。 – JMRboosties
私は問題が最初の結果を照会する前に* mCursor.moveToNext()*を呼び出していると思います。ループを* while(mCursor.moveToNext()){} *から* do {} while(mCursor.moveToNext())*に変更します。 –
授業中に、私が戻ったときにこれを試してみます。ありがとう! – JMRboosties