Java 如何以编程方式更改选定项并修改视图?
我有个小问题 我在android中使用Spinner。例如,微调器包含4个字符串项:Item1、Item2、Item3、Item4。微调器由例如Item3设置。现在我想通过编程将所选项目更改为Item2,并将字体颜色更改为红色。所以我做了:Java 如何以编程方式更改选定项并修改视图?,java,android,spinner,android-spinner,Java,Android,Spinner,Android Spinner,我有个小问题 我在android中使用Spinner。例如,微调器包含4个字符串项:Item1、Item2、Item3、Item4。微调器由例如Item3设置。现在我想通过编程将所选项目更改为Item2,并将字体颜色更改为红色。所以我做了: _spinner.setSelection(1); View view = _spinner.getSelectedView(); if(view instanceof TextView) { // change color } 但它不起作用。这是
_spinner.setSelection(1);
View view = _spinner.getSelectedView();
if(view instanceof TextView)
{
// change color
}
但它不起作用。这是因为当我获得selectedView时,Item3仍然处于选中状态,所以我更改了Item3视图的颜色。如何修复它?试试这个
spinner= findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) adapterView.getChildAt(0)).setTextColor(getResources().getColor(R.color.black));
((TextView) adapterView.getChildAt(0)).setTextSize(19); }
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
spinner=findviewbyd(R.id.spinner);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
((TextView)adapterView.getChildAt(0)).setTextColor(getResources().getColor(R.color.black));
((TextView)adapterView.getChildAt(0)).setTextSize(19);}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
尝试如下设置适配器:
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, list) {
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView tv = (TextView) view;
if (position == 0)
tv.setTextColor(ContextCompat.getColor(Activity.this, android.R.color.darker_gray));
else
tv.setTextColor(ContextCompat.getColor(Activity.this, android.R.color.black));
return view;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter );
spinner.setSelection(Adapter.getPosition(Item2));
final ArrayAdapter adapter=新的ArrayAdapter(
这个,android.R.layout.simple\u微调器\u项目,列表){
@凌驾
公共视图getDropDownView(int位置,视图转换视图,
视图组(父级){
视图=super.getDropDownView(位置、转换视图、父级);
TextView电视=(TextView)视图;
如果(位置==0)
tv.setTextColor(ContextCompat.getColor(Activity.this,android.R.color.darker_gray));
其他的
tv.setTextColor(ContextCompat.getColor(Activity.this,android.R.color.black));
返回视图;
}
};
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setSelection(适配器.getPosition(项目2));
通过这种方式,您可以轻松地为Item1、Item2或Item3设置不同的颜色
项目2将在微调器上动态设置。您描述了一个糟糕的示例。设置微调器时。设置选择(2);它必须设置item3,因为它是item的索引,计数从0开始。所以也许你的方法很好用Eugene-修复:)在调用方法“setSelection”后,我已经有了一些OnItemSelectedListener bu,但没有调用OnItemSelected方法。我不确定(我现在不在家),但我有看法。当我在家时,我尝试将其更改为AdapterView.OnItemSelectedListerner:)是的,这是工作。我已经实现了这个侦听器,但还有另一个问题;)谢谢你的帮助:)