问题从SQLite数据库转换为EditText

时间:2010-10-04 11:55:39

标签: android sqlite android-edittext

我有一个包含3个表的数据库。它们是“项目”,“联系人”和“项目类型”。我有一个UI用于创建(添加记录)一个新项目,该项目将记录添加到“项目”表中。在该UI中,我有一个按钮,用于从“联系人”表中获取联系人姓名,该表又显示所有联系人的列表视图。选择名称后,它应返回到项目UI,并且名称必须显示在EditText中。但是,我一直在EditText中得到这个: android.database.sqlite.SQLiteCursor@43d34310

将代码段附加到帖子上以获取建议。

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();

}

Projects UI代码,用于启动ListView的活动并获取结果:

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);
}

这是来自数据库适配器的查询()

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;
}

请就此解决方案提出建议。

提前致谢。

1 个答案:

答案 0 :(得分:4)

  

Object o = this.getListAdapter()。getItem(position);

此时,oCursor,位于正确的行。

  

String keyword = o.toString();

此时,keyword看起来像android.database.sqlite.SQLiteCursor@43d34310,因为这是您在toString()上致电Cursor时获得的。

也许您应该使用某些列索引调用getString()