Android 更改微调器中的选定项

Android 更改微调器中的选定项,android,listview,spinner,Android,Listview,Spinner,我有一个自定义微调器类,我想更改所选项目的文本颜色。如您所见,文本在虚拟设备中几乎无法读取。我可以将列表项设置为黑色,正如您在我的代码中看到的,但我不确定如何更改所选项目的颜色?有什么想法吗 package com.cbs.iomamobile; import java.util.ArrayList; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import andr

我有一个自定义微调器类,我想更改所选项目的文本颜色。如您所见,文本在虚拟设备中几乎无法读取。我可以将列表项设置为黑色,正如您在我的代码中看到的,但我不确定如何更改所选项目的颜色?有什么想法吗

    package com.cbs.iomamobile;

import java.util.ArrayList;

import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class CustomCreateAssemblyViewAdapter extends BaseAdapter{

    private static ArrayList<ArrayList<String>> partLotNumbersArrayList;
    private static ArrayList<String> partNames;
    private static String selected;
    private LayoutInflater mInflater;

    private Context myContext;

    public CustomCreateAssemblyViewAdapter(Context context, ArrayList<ArrayList<String>> results, ArrayList<String> parts){
        partLotNumbersArrayList = results;
        partNames = parts;
        mInflater = LayoutInflater.from(context);
        myContext = context;
    }
    @Override
    public int getCount() {
        return partLotNumbersArrayList.size();
    }

    @Override
    public Object getItem(int position) {
        return partLotNumbersArrayList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }



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

        final ViewHolder holder;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.view_assembly_parts, null);
            holder = new ViewHolder();
            holder.txtName = (TextView) convertView.findViewById(R.id.partName);
            holder.spinner = (Spinner) convertView.findViewById(R.id.LotNumbers);
            convertView.setTag(holder); 
            holder.txtName.setTextColor(Color.BLACK);

            /*if(!holder.txtName.hasFocus()){
                holder.txtName.setFocusable(true);
                holder.txtName.requestFocus();
            }
            if(!holder.spinner.hasFocus()){
                holder.spinner.setFocusable(true);
                holder.spinner.requestFocus();
            }*/
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txtName.setText(partNames.get(position));        

        //this is needed to set the text color of the dropdown items, else the text is unreadable.
        ArrayAdapter<String> adp1=new ArrayAdapter<String>(myContext, android.R.layout.simple_list_item_1, partLotNumbersArrayList.get(position)){
            @Override
            public View getDropDownView(int position, View convertView,android.view.ViewGroup parent){
                View v = convertView;
                View view = super.getView(position, convertView, parent);               
                TextView text = (TextView) view.findViewById(android.R.id.text1);
                text.setTextColor(Color.BLACK);
                text.setBackgroundColor(Color.WHITE);
                return view;
            }
        };

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

        //set the adapter to the spinnner
        holder.spinner.setAdapter(adp1);        

        //if there is only one other part besides "" then set that as default part
        if(partLotNumbersArrayList.get(position).size() == 2){
            holder.spinner.setSelection(1);
        }   

        holder.spinner.setOnItemSelectedListener(new OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {


            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
                ///ViewOrderlineAssemblyActivity.assembly.addPart(new Part((String)holder.txtName.getText(), ""));
                //Log.v("OnNothingSelected", (String)holder.txtName.getText());
            }

        });

        return convertView;
    }

    static class ViewHolder {
        TextView txtName;
        Spinner spinner;
    }
}

package com.cbs.iomamobile;
导入java.util.ArrayList;
导入org.apache.http.message.BasicNameValuePair;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Color;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemSelectedListener;
导入android.widget.ArrayAdapter;
导入android.widget.BaseAdapter;
导入android.widget.Spinner;
导入android.widget.TextView;
公共类CustomCreateSassemblyViewAdapter扩展了BaseAdapter{
私有静态ArrayList PartLotNumberArrayList;
私有静态ArrayList部件名;
选择私有静态字符串;
私人停车场;
私人语境;
公共CustomCreateSassemblyViewAdapter(上下文上下文、ArrayList结果、ArrayList部分){
PartLotNumberArrayList=结果;
零件名称=零件;
mInflater=LayoutInflater.from(上下文);
myContext=上下文;
}
@凌驾
public int getCount(){
返回partLotusNumberArrayList.size();
}
@凌驾
公共对象getItem(int位置){
返回PartLotNumberArrayList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终持票人;
if(convertView==null){
convertView=mInflater.充气(R.layout.view\u assembly\u parts,空);
holder=新的ViewHolder();
holder.txtName=(TextView)convertView.findViewById(R.id.partName);
holder.spinner=(spinner)convertView.findViewById(R.id.LotNumbers);
convertView.setTag(支架);
holder.txtName.setTextColor(Color.BLACK);
/*如果(!holder.txtName.hasFocus()){
holder.txtName.setFocusable(true);
holder.txtName.requestFocus();
}
如果(!holder.spinner.hasFocus()){
保持器.微调器.设置聚焦(真);
holder.spinner.requestFocus();
}*/
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.txtName.setText(partNames.get(position));
//需要设置下拉项的文本颜色,否则文本无法读取。
ArrayAdapter adp1=新的ArrayAdapter(myContext,android.R.layout.simple_list_item_1,PartLotNumberArrayList.get(位置)){
@凌驾
公共视图getDropDownView(int位置,视图转换视图,android.View.ViewGroup父级){
视图v=转换视图;
视图=super.getView(位置、转换视图、父级);
TextView text=(TextView)view.findViewById(android.R.id.text1);
text.setTextColor(Color.BLACK);
text.setBackgroundColor(颜色:白色);
返回视图;
}
};
adp1.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//将适配器设置为微调器
固定器.旋转器.固定接头(adp1);
//如果除“”之外只有一个其他部分,则将其设置为默认部分
if(PartLotNumberArrayList.get(position).size()==2){
旋转器固定器(1);
}   
holder.spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、内部arg2、长arg3){
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
///ViewOrderlineAssemblyActivity.assembly.addPart(新零件((字符串)holder.txtName.getText(),“”);
//Log.v(“OnNothingSelected”,(String)holder.txtName.getText();
}
});
返回视图;
}
静态类视窗夹{
TextView-txtName;
纺纱机;
}
}

尝试在您的
OnItemSelectedListener
中实现
onItemSelected

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    ((TextView) arg0.getChildAt(0)).setTextColor(Color.RED);
}
@覆盖
已选择公共视图(AdapterView arg0、视图arg1、内部arg2、长arg3){
((TextView)arg0.getChildAt(0)).setTextColor(Color.RED);
}