我需要將一個噴絲板配接器設定為依賴另一個噴絲板選擇。
例如:
我有2個旋轉器。稱之為spinner1和spinner2。
spinner1的內容是 "水果、蔬菜"。
如果spinner1設定為 "水果",spinner2設定為 "蘋果、芒果、香蕉"
如果spinner1設定為 "蔬菜",spinner2設定為 "胡蘿卜、卷心菜、茄子"我已經用if-else方法得到了解決方案。但由于我的實際代碼需要在spinner1上設定大量的串列,所以也需要大量的if-else方法來設定spinner2。
有沒有人知道如何使用 "for "方法來解決這個問題?
下面是我當前的代碼
spinner1.setAdapter(adapterC);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView< ? > parent, View view, int position, long id) {
String spinner1Selection = spinner1.getSelectedItem().toString();
if (spinner1Selection("fruit")){
spinner2.setAdapter(fruitAdapter)。
}
if (spinner1Selection.equals("vegetary")){
spinner2.setAdapter(vegettingAdapter)。
}
}
public void onNothingSelected(AdapterView<?> parent){
}
});
uj5u.com熱心網友回復:
我看到你在用String設定配接器,而spinner2.setAdapter()應該采取Spinner配接器,就像你在spinner1.setAdapter(adapterC)中做的那樣。 通過從spinner1的選擇中獲得所需的串列...比如在陣列中添加所有的蔬菜,在分離的陣列中添加水果等等...然后根據第一個spinner的選擇,你為spinner2創建新的配接器,然后用所需的物件填充它并將其設定為spinner2
。uj5u.com熱心網友回復:
我是這樣做的;首先你應該初始化你的spinners:
span class="hljs-keyword">private fun initSpinners() {
initSpinner1() //水果、蔬菜 ()。
initSpinner2() //取決于spinner1。
}
在第一個函式中,你可以這樣做。 private fun initSpinner1() {
adapterOne=
ArrayAdapter(requireContext(), R.layout.spinner_one, getListOne())
adapterOne.setDropDownViewResource(R.layout.layout_spinner)
with(spinnerOne) {
配接器 = adapterOne
setSelection(0, false)
onItemSelectedListener = thisClass
prompt = getString(R.string.choose_item_one)
gravity = Gravity.CENTER
}
}
而在你的第二個函式中 :
private fun initSpinner2() {
adapterTwo= ArrayAdapter(requireContext(), R.layout.layout_spinner, getSecondList())
adapterTwo.setDropDownViewResource(R.layout.spinner_right_aligned)
adapterTwo.setNotifyOnChange(true)
with(adapterTwo) {
配接器 = 配接器二
setSelection(0, false)
onItemSelectedListener = thisClass
prompt = getString(R.string.choose_item_two)
gravity = Gravity.CENTER
}
}
最后,在你的onItemSelected函式中,你可以用它們的id來區分這兩個旋轉器
。override fun onItemSelected(parent: AdapterView<*> ?, view: View? , position: Int, id: Long) {
when (parent?.id) {
R.id.spinnerOne-> {
// firstList = listOf("Fruit", "Vegetables")
currentOneId= firstList[position].id
updateFirstList()
}
R.id.spinnerTwo-> {
//do something... secondList=listOf(ItemModel("Banana",FRUIT_ID),ItemModel("Carrot",VEGETABLE_ID),...)
secondList[位置]
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/321615.html
標籤:
上一篇:如何解決這個錯誤?錯誤:找不到符號Vholder.setData(mValues.get(position))。
