【问题标题】:How to get list of data from database to spinner如何从数据库获取数据列表到微调器
【发布时间】:2015-02-21 23:22:32
【问题描述】:

我想从我的用户表中获取所有用户名以显示在我的微调器中以供选择,但不是显示我的列表中的所有用户名,它只显示一个是我数据库中的第一个用户.. 我怎样才能获得所有用户名?

   String q = "SELECT * FROM " + User.TABLE;
    Cursor cursor = dbHelper.getReadableDatabase().rawQuery(q, null);
    String[] ComRep = new String[0];
    if (cursor.moveToFirst()) {
        String rep = cursor.getString(cursor.getColumnIndex(User.KEY_username));

        do {

            ComRep = new String[]{rep};
        } while (cursor.moveToNext());

    }
    cursor.close();

    Comrep = (Spinner) findViewById(R.id.spincomrep);
    ArrayAdapter<CharSequence> adapterrep = new ArrayAdapter<CharSequence>(this, R.layout.spinner_item, ComRep);
    adapterrep.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    Comrep.setAdapter(adapterrep);
    Comrep.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Comrep.setSelection(position);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

提前谢谢..

【问题讨论】:

    标签: android sqlite android-spinner


    【解决方案1】:

    您实际上并没有在数组中累积任何值。每次循环时,您都会创建一个新数组。

    ArrayList<String> values = new ArrayList<String>();
    while (cursor.moveToNext()) {
        String rep = cursor.getString(cursor.getColumnIndex(User.KEY_username));
        values.add(rep);
    }
    cursor.close();
    
    ArrayAdapter<CharSequence> adapterrep = new ArrayAdapter<CharSequence>(this, R.layout.spinner_item, values.toArray(new String[values.size]));
    

    你应该看看CursorAdapter。您可以直接从光标制作适配器,因此您无需编写循环代码。

    【讨论】:

    • 现在我知道了.. 谢谢你的信息.. 非常感谢@bohica
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多