如何使用数组而不是游标来实现微调器

时间:2012-06-19 05:44:19

标签: android

我目前正在使用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 个答案:

答案 0 :(得分: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,

答案 1 :(得分:1)

如果它是短而静态的,你可以考虑将它作为一个数组放在strings.xml中并以这种方式访问​​它,而不是从DB中读取并转换为数组会产生更大的开销。

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

答案 2 :(得分:0)

然后你必须为iterating over cursor and fetch data写一个逻辑。使用从光标获得的这些数据创建数组。

答案 3 :(得分: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());
}