Проблема приведения результата из базы данных SQLite в EditText - PullRequest
0 голосов
/ 04 октября 2010

У меня есть база данных с 3 таблицами.Это «Проекты», «Контакты» и «Типы проектов».У меня есть пользовательский интерфейс для создания (добавления записи) нового проекта, который добавляет запись в таблицу «Проекты».В этом интерфейсе у меня есть кнопка для выбора Имен контактов из таблицы «Контакты», которая в свою очередь отображает ListView всех контактов.Когда имя выбрано, оно должно вернуться в пользовательский интерфейс Projects, и имя должно быть отображено в 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 для запуска операции для 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 Ответ

4 голосов
/ 04 октября 2010

Object o = this.getListAdapter (). GetItem (position);

В этот момент o является Cursor, расположенным в правильной строке.

String keyword = o.toString ();

На этом этапе keyword будет выглядеть примерно как android.database.sqlite.SQLiteCursor@43d34310, потому что это то, что вы получаете, когда выпозвоните toString() на Cursor.

Возможно, вам следует звонить getString() с некоторым индексом столбца.

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