2011-03-10 60 views
0

像這樣one,我在這個網站上看到了一些操作方法,但是如實地,我並不是真的得到它Android中的動態調整器(一般工作流問題)

我想讓一個微調控件的內容基於之前的微調控件選擇,例如在州和城市場景中。一般來說,工作流程是什麼?第二個微調控制器的結果是基於第一個微調控制器進行過濾還是第二個微調控制器指向基於第一個微調控制器的完全不同的列表?

對於我自己的簡單學習項目,我在strings.xml(AL城市,AK城市,AR城市等)中建立了幾個字符串數組。我希望城市微調者根據來自狀態微調器的選擇從正確的數組中填充。但是我想知道是不是我應該只有一個大的多維城市數組,其狀態縮寫爲附加標識符,然後使用狀態縮寫作爲過濾器指向第二個微調組。看起來前者似乎會提供更好的表現。

任何幫助(和代碼示例)將不勝感激。我對編程並不陌生(主要是php,所以我猜腳本更準確),但我是java的新手。我的代碼到目前爲止與未連接的spinners在下面,第二個微調指向一個未區分的city_array。

謝謝!

public class Example1 extends Activity { 

/** Called when the activity is first created. */ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.example1); 

    Spinner spinState = (Spinner) findViewById(R.id.spin_state); 
    ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(
      this, R.array.state_array, android.R.layout.simple_spinner_item); 
    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinState.setAdapter(adapter3); 

    Spinner spinCity = (Spinner) findViewById(R.id.spin_city); 
    ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(
      this, R.array.city_array, android.R.layout.simple_spinner_item); 
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinCity.setAdapter(adapter4); 
} 
} 

回答

1

你可以嘗試,並從你的第一個微調,你已經選擇了一個得到這個職位,然後檢索基於該位置上的正確排列後,填充你的第二個微調。

你要聽你的第一個適配器正在改變:

spinner. setOnItemSelectedListener(new MyOnItemSelectedListener()); 


class MyOnItemSelectedListener implements OnItemSelectedListener { 
    public void onItemSelected(AdapterView<?> parent, 
     View view, int pos, long id) { 
     String choice = parent.getItemAtPosition(pos).toString(); 
      populateSecondSpinnerMethod(choice) 
     } 
    } 
    public void onNothingSelected(AdapterView parent) {  // Do nothing. 
    } 
} 
+0

所以真正的魔力,在「populateSecondSpinnerMethod()」會怎樣?你會用if/else或switch/case來評估,並說出類似「If choice = Florida,spinner2.setAdapter ... FL-Cities」的內容嗎? – pr0t0 2011-03-10 20:12:21

+0

對不起,Pr0t0,超級錯過了這個> _ <,但聽起來合理的使用開關/外殼,然後選擇正確的適配器。 – 2011-04-26 19:06:16