我一个布局里需要有好几个spinner 控件,都是从数据库获取数据显示,
private void initbuildstationtype() {
final List<Dictionary> dictionaryList = myDbUtil.findDictionaryByType("check_result");
insetDictionaryList(dictionaryList);
mArrayAdapterDictionary = new ArrayAdapter<Dictionary>(mContext,
android.R.layout.simple_spinner_item, dictionaryList);
mArrayAdapterDictionary
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinnerCreateType.setAdapter(mArrayAdapterDictionary);
mSpinnerCreateType.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
int key = dictionaryList.get(position).getDkey();
param.put("checkresult", String.valueOf(key));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
这是一个spinner 的初始化数据的方法,还有好几个这样的spinner,其他页面也有这样的spinner,如何重构现在的代码呢,感觉这样的代码 太屎了,希望大神,说一下如何重构我现有的代码呢???
优化建议:1、代码重用,2、封装代码。
你可以尝试这样写:
private <V> void showSpinner(List<V> datas, OnItemSelectedListener listener) {
ArrayAdapter adapter = new ArrayAdapter<V>(mContext), android.R.layout.simple_spinner_item, datas);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner = new Spinner(mContext);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(listener);
}
在需要的地方调用即可:
List<Dictionary> dictionaryList = myDbUtil.findDictionaryByType("check_result");
insetDictionaryList(dictionaryList);
showSpinner(dictionaryList, listener);