【发布时间】:2011-06-25 23:29:47
【问题描述】:
我有一个包含 3 个表的数据库。它们是“项目”、“联系人”和“项目类型”。我有一个 UI 用于创建(添加记录)一个新项目,该项目将记录添加到“项目”表中。在那个 UI 中,我有一个按钮可以从“联系人”表中获取联系人姓名,该表依次显示所有联系人的 ListView。选择名称后,它应该返回到 Projects UI,并且名称必须显示在 EditText 中。但是,我一直在 EditText 中得到这个:android.database.sqlite.SQLiteCursor@43d34310
我将代码 sn-ps 附加到帖子以寻求建议。
ListActivity onCreate() 代码:
public class ContactsList extends ListActivity {
DBAdapter dbContactList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editproject_list);
dbContactList = new DBAdapter(this);
// Pull the data from the database
String[] fields = new String[] { dbContactList.TABLE_CON_NAME };
int[] views = new int[] { android.R.id.text1 };
Cursor c = dbContactList.getAllContacts();
startManagingCursor(c);
// Set the ListView
ListAdapter prjName = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, c, fields, views);
setListAdapter(prjName);
dbContactList.close();
}
onListItemClick 代码:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the item that was clicked
Intent selectedContact = new Intent();
Object o = this.getListAdapter().getItem(position);
String keyword = o.toString();
selectedContact.putExtra("selectedcontact", keyword);
setResult(RESULT_OK, selectedContact);
finish();
}
以及用于启动 ListView 活动并获取结果的 Projects UI 代码:
public void onClickContactPicker(View target)
{
Intent contactPicker = new Intent(this, com.dzinesunlimited.quotetogo.ContactsList.class);
startActivityForResult(contactPicker, contact);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String contact = data.getExtras().getString("selectedcontact").toString();
((EditText)findViewById(R.id.txtProjectContacts)).setText(contact);
}
这是来自 DB 适配器的 query()
public Cursor getAllContacts()
{
Cursor cursor = null;
try
{
cursor = db.query(TABLE_CONTACTS, new String[] {
TABLE_CON_ID, TABLE_CON_NAME, TABLE_CON_EMAIL,
TABLE_CON_EXPERTISE, TABLE_CON_CHARGES},
null,
null,
null,
null,
null);
}
catch (SQLiteException e)
{
Log.e("Database.addRow", "Database Error: " + e.toString());
e.printStackTrace();
}
return cursor;
}
请提供解决方案。
提前致谢。
【问题讨论】:
-
您确定您请求的字段是正确的吗?
-
我不确定你的意思。但是,如果您的意思是将其投射到正确的 EditText 上,是的。在尝试将它投射到 EditText 之前,我还使用了一个 toast,但它仍然在 toast 中显示相同的结果。哦,我的坏。是的先生。我在查询中请求正确的字段。让我添加适配器 query() 以供参考。
标签: android sqlite android-edittext