0

我目前正在使用 simpleCursorAdaptor 和游标来加载带有数据的微调器,但是我更愿意将游标转换为简单的数组并改用它(因为列表很短且是静态的)。

最简单的方法是什么?

我目前的代码是:

    private void loadEmployeeList(){
    LoginDataHandler dataHandler = new LoginDataHandler(getContentResolver());
    Cursor data = dataHandler.activeEmployeeList();
    if (null!=data){

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
                android.R.layout.simple_spinner_item, 
                data, 
                new String[]{MyobiliseData.Columns_employees.NAME},
                new int[] { android.R.id.text1 }
                );

        // Attach the data to the spinner using an adaptor
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

    }

}
4

4 回答 4

1
ArrayList<String> mArrayList = new ArrayList<String>();
for(data.moveToFirst(); !data.isAfterLast(); data.moveToNext()) {
    mArrayList.add(data.getString(data.getColumnIndex(MyobiliseData.Columns_employees.NAME)));
}

现在你可以继续,因为你有一个光标数据的数组 mArrayList,

于 2012-06-19T05:47:55.090 回答
1

如果它很短且是静态的,您可能会考虑将其作为数组放入您的 strings.xml 并以这种方式访问​​它,而不是从数据库读取和转换为数组时产生更大的开销。

数据.xml

<resources>
    <string-array name="States">
        <item>AL</item>
        <item>AK</item>
        <item>AR</item>
    </string-array>
</resources>

然后将其用于您的微调器:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
    getActivity(), R.array.States, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.listlayout_black);
final Spinner states = (Spinner) v.findViewById(R.id.mbr_state_spinner);
states.setAdapter(adapter);
于 2012-06-19T05:57:22.277 回答
0

然后,您必须编写一个用于迭代 cursor 和 fetch data的逻辑。使用从光标处获得的这些数据创建数组。

于 2012-06-19T05:45:58.080 回答
0

干得好

ArrayList<String> list = new ArrayList<String>();
Cursor data = dataHandler.activeEmployeeList();

if (data.moveToFirst()) 
{
    do {
        list.add(data.getString(data.getColumnIndex(MyobiliseData.Columns_employees.NAME)));
       } while (data.moveToNext());
}
于 2012-06-19T05:48:58.070 回答