1

私はスピナーとデータベースを持っているので、スピナーをクリックすると、その中の連絡先の値(名前)を簡単なコードで表示したいと思います。したがって、これらは分離されたjavaとxmlレイアウトであり、スピナーは(Novamensagem.java novamensagem.xml)にあり、contacsデータベースは(Adicionarcontato.java adicionarcontato.xml)にあります。指定できれば、コードの方が優れています。

    final TextView spinnerContato = (TextView) findViewById(R.id.spinner);
    String[] campos = new String[] {"nome", "telefone"};

    Cursor c = db.query("contatos", campos, null, null, null, null, null);
    c.moveToFirst();
    String lista = "";
    if(c.getCount() > 0) {
        while(true) {
            lista = lista + c.getString(c.getColumnIndex("nome")).toString() + "";
            if(!c.moveToNext()) break;
        }

        spinnerContato.setText(lista);
    }

それはコードですが、それはエラーを与えます(コメントでもっと説明されています)//

コード全体:

ArrayList<String>() list = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.novamensagem);

    db = openOrCreateDatabase("banco.db", Context.MODE_WORLD_WRITEABLE, null);

     SalvaMensagem();

    //Data e Hora
    setCurrentDateOnView();
    addListenerOnButton();
    setCurrentTimeOnView();
    addListenerOnButton2();

    //Spinner
    DadosSpinner();





}





private void DadosSpinner() {
    // TODO Auto-generated method stub

    final TextView spinnerContato = (TextView) findViewById(R.id.spinner);
    String[] campos = new String[] {"nome", "telefone"};

    list = new ArrayList<String>();
    Cursor c = db.query("contatos", campos, null, null, null, null, null);
    c.moveToFirst();
    String lista = "";
    if(c.getCount() > 0) {
        while(true) {
           list.add(c.getString(c.getColumnIndex("nome")).toString());
            if(!c.moveToNext()) break;
        }
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);


    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


    spinner.setAdapter(adapter);        
    }`

がある。

4

2 に答える 2

1

これをチェックして

list = new ArrayList<String>();
Cursor c = db.query("contatos", campos, null, null, null, null, null);
c.moveToFirst();
String lista = "";
if(c.getCount() > 0) {
    while(true) {
       list.add(c.getString(c.getColumnIndex("nome")).toString());
        if(!c.moveToNext()) break;
    }


}   

これは、アイテムのarrayListを取得するのに役立ちます。

次にこれを行う

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, list);


adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


spinner.setAdapter(adapter);

問題が発生した場合は戻ってください

于 2012-09-12T18:08:47.210 に答える
1

SQLite データベースからスピナー データをロードするには、次のことを行う必要があります。

  1. データベースから連絡先を読み取り、リストに保存します (例)
  2. スピナー用のアダプターを作成する

メソッドは次のようになります。

 private void loadSpinnerData() 
 {
    // database handler
    DatabaseHandler db = new DatabaseHandler(getApplicationContext());

    // Spinner Drop down elements
    List<String> contacts = db.getAllContacts();

    // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, contacts);

    // Drop down layout style - list view with radio button
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);
 }

getAllContacts() メソッドはすべての連絡先を返します。

public List<String> getAllConatcts(){
    List<String> contacts = new ArrayList<String>();

    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            contacts.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }

    // closing connection
    cursor.close();
    db.close();

    // returning contatcs
    return contacts;
}

詳細については、このチュートリアルを確認してください: http://www.androidhive.info/2012/06/android-populating-spinner-data-from-sqlite-database/

于 2012-09-12T17:41:10.447 に答える