2010-10-04 1 views
0

У меня есть база данных с 3 таблицами. Это «Проекты», «Контакты» и «Типы проектов». У меня есть пользовательский интерфейс для создания (добавления записи) нового проекта, который добавляет запись в таблицу «Проекты». В этом пользовательском интерфейсе у меня есть кнопка для получения имен контактов из таблицы «Контакты», которая, в свою очередь, отображает ListView всех контактов. Когда имя выбрано, оно должно вернуться к интерфейсу проектов, и имя должно быть отображено в EditText. Тем не менее, я продолжаю получать это в EditText: [email protected]Проблема приведения результата из базы данных SQLite в EditText

Я хочу добавить фрагменты кода к сообщению для консультации.

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

} 

И код Проекты 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); 
} 

Это запрос() от адаптера DB

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

Прошу совета относительно решения этого вопроса.

Заранее спасибо.

+0

Вы уверены, что поле, которое вы запрашиваете, является правильным? – fedj

+0

Я не уверен, что вы подразумеваете под этим. Но если вы хотите отбросить его вправо EditText, да. Я также использовал тост, прежде чем я попытался применить его к EditText, но он все еще показывает тот же результат в тосте. О, мое плохое. Да сэр. Я запрашиваю правильное поле в запросе. Позвольте мне добавить запрос адаптера() для справки. –

ответ

4

Объект o = this.getListAdapter(). GetItem (position);

На данный момент o является Cursor, расположенным в правильном ряду.

Строковое ключевое слово = o.toString();

На данный момент, keyword будет выглядеть как [email protected], потому что это то, что вы получаете, когда вы звоните toString() на Cursor.

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

+0

Означает ли это, что я заменяю o.toString() на o.getString (1)? Я все еще не очень хорошо знаком с разработкой Android и до сих пор довольно новичок, как вы бы уже узнали. Вся помощь очень ценится. –

+0

@Siddharth Lele: Если столбец '1' содержит значение, которое вы хотите отобразить в' EditText', тогда да, 'o.getString (1)' будет тем, что вы хотите. – CommonsWare

+0

Я действительно смущен, сэр. У меня нет опции o.getString. Есть ли альтернативное решение, которое вы можете предложить вместо того, которое я использую? Может быть, ссылка на учебник? Я следовал аналогичной должности, на которой вы ответили на аналогичный вопрос, но я действительно не мог сделать из него головы или хвосты: http://stackoverflow.com/questions/2075762/android-database-sqlite-sqlitecursor435b9ba0. Я понимаю, что я прошу слишком много. –

 Смежные вопросы

  • Нет связанных вопросов^_^