2010-04-20 25 views
5

Tôi đã tìm kiếm một người chờ đợi cho điều này trong một thời gian ngày hôm nay. Tất cả trông rất dễ dàng nhưng tôi không bao giờ làm cho nó hoạt động. Tôi muốn điền vào một spinner với con trỏ của tôi. Tôi đã cố gắng sử dụng SimpleCursorAdapter cho điều này như rất nhiều trang web nói rằng tôi sẽ nhưng tôi không bao giờ làm cho nó hoạt động. Chỉ cho tôi thấy nó dễ như thế nào :)Điền vào spinner từ con trỏ trong android

Cảm ơn bạn đã dành thời gian!

con trỏ của tôi

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

spinner My

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

Mã My

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

Bạn có thể hiển thị cho chúng tôi mã hoàn chỉnh, đặc biệt là việc bạn sử dụng SimpleCursorAdapter không? –

+0

Đã thêm mã. Làm thế nào để sử dụng cột và là cái gì tôi không hiểu. Tôi đã thử nghiệm với rất nhiều giá trị khác nhau ở đó nhưng nó chỉ làm cho một spinner rỗng với các nút radio trong đó. – Rickard

Trả lời

7

Mã sau giải quyết được sự cố của tôi. Tôi đã thiếu .setDropDownViewResource. Sau đó tôi đã sử dụng simple_spinner_dropdown_item vì vậy tôi không phải tạo bố cục của riêng mình.

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

Tôi không thấy một Xem cho thả xuống của bạn trong mã của bạn. Một cái gì đó như:

mAdapter.setDropDownViewResource(R.layout.spinner_view_dropdown); 

Tất nhiên bạn cần có tệp spinner_view_dropdown.xml trong thư mục res/layout của bạn.

0

Tôi đã thực hiện nó

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

Một DTO đơn giản

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

Phần 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; 
      } 
    } 

Vì vậy, sau đó tôi có thể bắt ID của mục chọn với

EntidadObject eo = (EntidadObject)empresasSpinner.getSelectedItem(); 
       eo.getId(); 
Các vấn đề liên quan