gpt4 book ai didi

java - Android - 如何在一个 Activity 中禁用多个微调器的特定项目

转载 作者:行者123 更新时间:2023-12-01 21:43:16 29 4
gpt4 key购买 nike

我在一项 Activity 中有三个旋转器。如何禁用从每个微调器中选择的项目到相应的微调器?

我已在 strings.xml 中的字符串数组中设置数据:

<string-array name="preferences">
<item>American Restaurant</item>
<item>Arabian Restaurant</item>
<item>Asian Restaurant</item>
<item>Chinese Restaurant</item>
<item>Filipino Restaurant</item>
<item>Indonesian Restaurant</item>
<item>Sushi Restaurant</item>
</string-array>

我声明了 ArrayAdapter 如下:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.preferences, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

这是我的微调器声明:

spinnerMainPref = findViewById(R.id.main_preference_spinner);
spinnerMainPref.setAdapter(adapter);
spinnerMainPref.setOnItemSelectedListener(this);

spinnerPref2 = findViewById(R.id.preference2_spinner);
spinnerPref2.setAdapter(adapter);
spinnerPref2.setOnItemSelectedListener(this);

spinnerPref3 = findViewById(R.id.preference3_spinner);
spinnerPref3.setAdapter(adapter);
spinnerPref3.setOnItemSelectedListener(this);

我尝试操作 onItemSelected 中的旋转器:

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

switch (adapterView.getId()) {
case R.id.main_preference_spinner:
String valueMainPref = adapterView.getItemAtPosition(i).toString();
editor.putString("mainPreference", valueMainPref);
editor.putInt("mainPreferenceValuePosition", i);
editor.apply();
break;

case R.id.preference2_spinner:
String valuePref2 = adapterView.getItemAtPosition(i).toString();
editor.putString("secondPreference", valuePref2);
editor.putInt("secondPreferenceValuePosition", i);
editor.apply();
break;

case R.id.preference3_spinner:
String valuePref3 = adapterView.getItemAtPosition(i).toString();
editor.putString("thirdPreference", valuePref3);
editor.putInt("thirdPreferenceValuePosition", i);
editor.apply();
break;
}
}

例如,如果用户在 spinner one 中选择特定项目,我想为 spinner 2spinner 3 禁用该项目。当用户在 spinner 2 中选择特定项目时也是如此,我想为 spinner 1spinner 3 禁用该项目。我希望你能理解我的问题:)

最佳答案

我认为您可以拥有一个如下所示的自定义旋转适配器。

public class MySpinnerAdapter extends BaseAdapter {


@Override
public void isEnabled(int position) {
return getItem(position).isEnabled();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

if(convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.item, null);
}

if(!isEnabled(position)) {
convertView.setEnabled(false);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//NO-OP: Just intercept click on disabled item
}
});
}

return convertView;
}
}

将适配器分配给每个微调器。然后,当选择一个微调器时,调用 isEnabled(false) 到其他微调器。无论如何,您必须跟踪这些状态,并确保当第一个状态被取消选择时,它会再次将其他状态设置为启用状态。

希望对您有所帮助。

关于java - Android - 如何在一个 Activity 中禁用多个微调器的特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58786322/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com