2010-04-20 5 views
5

Я уже давно искал тент для этого. Все выглядит так просто, но я никогда не заставляю его работать. Я хочу заполнить вертел своим курсором. Я пытаюсь использовать SimpleCursorAdapter для этого, так как многие сайты говорят, что я буду, но я никогда не получу его для работы. Покажите мне, насколько это просто :)Заполнение счетчика от курсора в android

Спасибо за ваше время!

Мой курсор

Cursor cursor = db.query(DATABASE_TABLE_Clients, new String[] {"_id", "C_Name"}, null, null, null, null, "C_Name"); 

Мой вертушка

(Spinner) findViewById(R.id.spnClients); 

Мой код

Cursor cursor_Names = SQLData.getClientNames(); 
startManagingCursor(cursor_Names); 

String[] columns = new String[] { "C_Name" }; 
int[] to = new int[] { R.id.txt_Address }; 

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_dropdown_item, cursor_Names, columns, to); 
Spinner spnClients = (Spinner) findViewById(R.id.spnClients); 
spnClients.setAdapter(mAdapter); 
+0

Можете ли вы показать нам полный код, особенно использование вами SimpleCursorAdapter? –

+0

Добавлен код. Как использовать столбцы и есть то, что я не понимаю. Я тестировал с большим количеством различных значений, но он только делает пустой счетчик с переключателями в нем. – Rickard

ответ

7

Следующий код решил мою проблему. Мне не хватало .setDropDownViewResource. После этого я использовал simple_spinner_dropdown_item, поэтому мне не нужно создавать свой собственный макет.

Cursor cursor_Names = SQLData.getClientNames(); 
    startManagingCursor(cursor_Names); 

    String[] columns = new String[] { "C_Name" }; 
    int[] to = new int[] { android.R.id.text1 }; 

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor_Names, columns, to); 
    mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    Spinner spnClients = (Spinner) findViewById(R.id.spnClients); 
    spnClients.setAdapter(mAdapter); 
5

Я не вижу View для вашего выпадающего меню в вашем коде. Что-то вроде:

mAdapter.setDropDownViewResource(R.layout.spinner_view_dropdown); 

Конечно вам нужно иметь файл spinner_view_dropdown.xml в вашем Рез/каталог раскладки.

0

Я сделал это

empresasSpinner = (Spinner) findViewById(R.id.empresasSpinner); 

    ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this, 
        android.R.layout.simple_spinner_item, empresasAll.toArray(new EntidadObject[0]));     
      empresasSpinner.setAdapter(spinnerArrayAdapter); 

с помощью простого DTO

public class EntidadObject { 
    private int id; 
    private String nombre; 
//GETTES and SETTERS 
}   

В часть DAO

public class EntidadDao { 
      //... 

     public List<EntidadObject> getEmpresas() { 
       Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM empresas", null); 
       List<EntidadObject> entidadObjects = new ArrayList<EntidadObject>(); 
       cursor.moveToFirst(); 
       do { 
        EntidadObject entidadObject = new EntidadObject(); 
        entidadObject.setId(cursor.getInt(0)); 
        entidadObject.setNombre(cursor.getString(1)); 

        entidadObjects.add(entidadObject); 
       } while (cursor.moveToNext()); 
       return entidadObjects; 
      } 
    } 

Итак, я могу поймать идентификатор выбора пункта с

EntidadObject eo = (EntidadObject)empresasSpinner.getSelectedItem(); 
       eo.getId(); 
Смежные вопросы