检查了很多其他问题和网站,找不到我正在寻找的内容。我正在做一个练习联系人列表...我想要做的是让用户能够更新联系人的信息。当他们点击一个联系人时,这些字段应该像现在一样填写,而不是空白的提示。现在的问题是,这些字段没有填充,一切正常,但所有字段只是提示,而不是用户在创建时为联系人填写的文本。下面是代码:从SQLite数据库中获取信息:填充已填充的字段并更新行
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,如果它不为null,则将EditTexts的文本设置为getter方法,以获取从fetchContact(long rowId)类获取的联系对象,该类返回一个联系人对象。然后我将所有的EditTexts设置为各自的getter。但是,当我在行动时,就像我说的那样,它只是把所有的领域都留空,只有一个提示。
有什么我在这里失踪?非常感谢。
我想到的一个潜在问题是我有两个意图要求此活动的结果,一个用于ACTIVITY_CREATE,一个用于ACTIVITY_EDIT。也许它得到了错误的意图。
这里是fetchContact()的代码 这里不适合它,会把它放在原始问题文本中。 – JMRboosties 2011-01-25 10:49:30