java - 使用setter的有效方法

标签 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 次相同的代码。

我想知道的是如何更有效地执行此操作,以便我可以扩展此代码并在将来添加更多“引擎盖”,而无需将它们添加到代码中。

最佳答案

关于:

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/

相关文章:

android - 如何使Android应用程序在离线模式下工作

java - spring ldap内存不足无法创建新的 native 线程

使用 PC 互联网连接进行 Android USB 调试

java - 当稳定性不是要求时,是否有任何常用的、高效的 Java 排序实现?

java - 计算数据矩阵中的空单元格 xlsx

android - adb android 与 Genymotion 冲突

java - 在 SQLite 数据库更改时更新游标

android - 有历史的EditText

java - "No Suitable Driver"基本 java derby DB 读取错误

java - 在没有所有必要数据的情况下修补 Google 事件开始日期和结束日期