我目前正在使用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);
}
}
答案 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());
}