Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 根据项目的选择更改Android中单个微调器项目的背景色_Java_Android_Spinner_Android Arrayadapter_Background Color - Fatal编程技术网

Java 根据项目的选择更改Android中单个微调器项目的背景色

Java 根据项目的选择更改Android中单个微调器项目的背景色,java,android,spinner,android-arrayadapter,background-color,Java,Android,Spinner,Android Arrayadapter,Background Color,我有一个名为SpinnerAdapter的ArrayAdapter,它接受android.R.layout.simple\u微调器项目作为它的布局。它还接收ContactInfo对象的ArrayList作为要显示的数据 然后我有一个称为selectionWheel的微调器,当进行选择时;它从前面提到的ArrayList中提取ContactInfo对象,并将其添加到新的ArrayList中 现在当我第二次提起旋转器时;我想检查两个ArrayList之间是否匹配,如果匹配,则通过更改其背景色来突出显

我有一个名为SpinnerAdapter的ArrayAdapter,它接受android.R.layout.simple\u微调器项目作为它的布局。它还接收ContactInfo对象的ArrayList作为要显示的数据

然后我有一个称为selectionWheel的微调器,当进行选择时;它从前面提到的ArrayList中提取ContactInfo对象,并将其添加到新的ArrayList中

现在当我第二次提起旋转器时;我想检查两个ArrayList之间是否匹配,如果匹配,则通过更改其背景色来突出显示微调器中的相应项

以下是我的尝试:

final Dialog dialog = new Dialog(getActivity());
            dialog.setContentView(R.layout.generic_selection_wheel);
            dialog.setTitle("Select a contact");
            final ArrayAdapter<ContactInfo> contactSelectionAdapter = new ArrayAdapter<ContactInfo>(
                    getActivity().getBaseContext(),
                    android.R.layout.simple_spinner_item, globaldata
                            .getContactInfoList());

            contactSelectionAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            Button dialogButtonOK = (Button) dialog
                    .findViewById(R.id.dialogButtonOK);
            final Spinner selectionWheel = (Spinner) dialog
                    .findViewById(R.id.genericselectionspinner);

            selectionWheel.setAdapter(contactSelectionAdapter);

            selectionWheel
                    .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                        @Override
                        public void onItemSelected(AdapterView<?> parent,
                                View view, int position, long id) {
                            // check to see if the contact has already been
                            // selected, if not add it. If it has do
                            // nothing.
                            View viewToChange = contactSelectionAdapter
                                    .getView(position, new View(
                                            getActivity()
                                                    .getBaseContext()),
                                            parent);
                            if (!activeContactsArrayList
                                    .contains(globaldata
                                            .getContactInfoList().get(
                                                    position))) {
                                activeContactsArrayList
                                        .add(globaldata
                                                .getContactInfoList().get(
                                                        position));
                                viewToChange.setBackgroundColor(Color.GREEN);;

                            } else if (activeContactsArrayList
                                    .contains(globaldata
                                            .getContactInfoList().get(
                                                    position))) {
                                activeContactsArrayList.remove(position);
                                viewToChange.setBackgroundColor(Color.WHITE);;
                            }
                            selectContactsBtn
                                    .setText(activeContactsArrayList.size()
                                            + " contacts selected");
                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> parent) {

                        }

                    });

            // if button is clicked, close the custom dialog
            dialogButtonOK.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    dialog.dismiss();
                }
            });

            dialog.show();
        }
    });

然而,这并没有达到我所描述的预期结果,我不确定从这里到哪里去…

以下是我所做的

package com.example.click;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends Activity{
    Spinner mySpinner;
    ArrayList<String> check = new ArrayList<String>();
    String[] myArray={"1","2","3","4","5"};
    String[] newArray={};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mySpinner = (Spinner)findViewById(R.id.spinner1);

        mySpinner.setAdapter(new MyAdapter(this,android.R.layout.simple_spinner_item, myArray));

        mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                if(check.contains(myArray[arg2])){
                    check.remove(myArray[arg2]);
                }
                else{
                    check.add(myArray[arg2]);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    public class MyAdapter extends ArrayAdapter<String>{

        public MyAdapter(Context context, int textViewResourceId,
                String[] objects) {
            super(context, textViewResourceId, objects);
            // TODO Auto-generated constructor stub
        }

        @Override
        public View getDropDownView(int position, View cnvtView, ViewGroup prnt){
            LayoutInflater inflater = getLayoutInflater();
            View spinnerItem = inflater.inflate(android.R.layout.simple_spinner_item, null);

            TextView mytext= (TextView)spinnerItem.findViewById(android.R.id.text1);
            mytext.setText(myArray[position]);

            if(check.contains(myArray[position])){
                spinnerItem.setBackgroundColor(Color.GREEN);
            }

            return spinnerItem;
        }

    }


}