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 次相同的代码。
我想知道的是如何更有效地执行此操作,以便我可以扩展此代码并在将来添加更多“引擎盖”,而无需将它们添加到代码中。
最佳答案
关于:
for(int i = 0; i < hoodList.size(); i++) {
if (item.equals(hoodList.get(i))) {
setHoodId(i+27); // or + hoodList.size() ?!
当然,这可能需要一些微调(例如,不要在最后得到“一次性”);但要点是:这就是发明 for 循环的目的。
此外,这里真正的收获是:Android“单独”具有挑战性。在处理 Android 主题之前,您应该对 Java 有良好的了解。在学习 Android 的同时尝试学习 Java 效率不高。我宁愿建议您使用 Oracle tutorials第一的。
关于java - 使用setter的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400762/