public class GraphFrame extends Fragment implements AdapterView.OnItemSelectedListener {
Integer hoodSelector = 27;
ArrayList<HoodData> hoodDataList = new ArrayList<>();
ArrayList<String> hoodList = new ArrayList<>();
Context mContext;
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
if (item.equals(hoodList.get(0))) {
setHoodId(27);
//refreshFragment();
} else if (item.equals(hoodList.get(1))) {
setHoodId(28);
refreshFragment();
} else if (item.equals(hoodList.get(2))) {
setHoodId(29);
refreshFragment();
} else if (item.equals(hoodList.get(3))) {
...
else if (item.equals(hoodList.get(65))) {
setHoodId(92);
refreshFragment();
}
}
...
我已经编写了这段代码,并且它正在运行但是你可以看到它有点乱,因为我定义了相同代码的67倍。
我想知道的是如何更有效地完成这项工作,以便我可以扩展此代码并在未来添加更多&#34; hoods&#34;没有将它们添加到代码中。
答案 0 :(得分:1)
怎么样:
for(int i = 0; i < hoodList.size(); i++) {
if (item.equals(hoodList.get(i))) {
setHoodId(i+27); // or + hoodList.size() ?!
当然,这可能需要一些微调(例如最终不要“一次性”);但重点是:这就是for-loops的发明。
此外,真正的外卖:Android“独自”具有挑战性。在处理Android主题之前,您应该具备良好的Java知识。在学习Android时尝试学习Java 效率不高。我建议您首先完成Oracle tutorials的工作。