使用setter的有效方式

时间:2017-04-13 19:58:44

标签: java android

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;没有将它们添加到代码中。

1 个答案:

答案 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的工作。