Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式更改选定项并修改视图?_Java_Android_Spinner_Android Spinner - Fatal编程技术网

Java 如何以编程方式更改选定项并修改视图?

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 } 但它不起作用。这是

我有个小问题

我在android中使用Spinner。例如,微调器包含4个字符串项:Item1、Item2、Item3、Item4。微调器由例如Item3设置。现在我想通过编程将所选项目更改为Item2,并将字体颜色更改为红色。所以我做了:

_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:)是的,这是工作。我已经实现了这个侦听器,但还有另一个问题;)谢谢你的帮助:)