Android:动态填充微调器,然后更改其字体颜色

Android:动态填充微调器,然后更改其字体颜色,android,android-arrayadapter,android-spinner,Android,Android Arrayadapter,Android Spinner,我有一个数组,它使用这个方法从JSON填充它的项 JSONObject dataProvinsi = new JSONObject(data.getString("data")); ArrayList<CharSequence> arrKota = new ArrayList<>(); JSONArray jsArrKota = dataProvinsi.getJSONArray("kota"); if(jsArrKota.length() > 0) { f

我有一个数组,它使用这个方法从JSON填充它的项

JSONObject dataProvinsi = new JSONObject(data.getString("data"));
ArrayList<CharSequence> arrKota = new ArrayList<>();
JSONArray jsArrKota = dataProvinsi.getJSONArray("kota");
if(jsArrKota.length() > 0) {
    for (int i = 0; i < jsArrKota.length(); i++) {
        arrKota.add(jsArrKota.get(i).toString());
    }
}
我创建了自己的适配器类

public class ProvinsiAdapter extends ArrayAdapter<CharSequence> {
    private final Context context;
    private final ArrayList<CharSequence> itemsArrayList;

    public ProvinsiAdapter(Context context,int resource, ArrayList<CharSequence> itemsArrayList) {

        super(context, android.R.layout.simple_spinner_item, itemsArrayList);

        this.context = context;
        this.setDropDownViewResource(resource);
        this.itemsArrayList = itemsArrayList;
    }
}
公共类ProvincAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终阵列列表项阵列列表;
public ProvinceAdapter(上下文上下文、int资源、ArrayList itemsArrayList){
super(context,android.R.layout.simple\u spinner\u item,itemsArrayList);
this.context=上下文;
此.setDropDownViewResource(资源);
this.itemsArrayList=itemsArrayList;
}
}

我的旋转器工作得很好,但我面临一些问题。我的微调器文本变为白色,无法将其颜色更改为黑色。我的问题是,如何更改微调器文本颜色?任何帮助都将不胜感激。谢谢。

因为您使用的是本机布局,id为:“android.R.layout.simple\u spinner\u item”系统将显示此布局及其规格

那你该怎么办

你有两个选择:

A-打开此布局并查找textView的id,即“R.id.text1” 然后重写自定义适配器中的“getView()”方法,并使用以下代码更改文本的颜色:

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

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
    }
    TextView textView = (TextView) convertView.findViewById(android.R.id.text1);
    textView.setTextColor(R.color.your_color);

    return convertView;
}
或者:B-您可以按自己的方式工作(带有自定义布局的自定义适配器) 您也将以同样的方式覆盖getView

您可以查看此链接以了解进一步的说明:

因为您使用的是本机布局,id为:“android.R.layout.simple\u spinner\u item”系统将显示此布局及其规格

那你该怎么办

你有两个选择:

A-打开此布局并查找textView的id,即“R.id.text1” 然后重写自定义适配器中的“getView()”方法,并使用以下代码更改文本的颜色:

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

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
    }
    TextView textView = (TextView) convertView.findViewById(android.R.id.text1);
    textView.setTextColor(R.color.your_color);

    return convertView;
}
或者:B-您可以按自己的方式工作(带有自定义布局的自定义适配器) 您也将以同样的方式覆盖getView

您可以查看此链接以了解进一步的说明:

案例A:我应该覆盖哪个类的getView方法?案例B:我尝试使用这种方法创建适配器,比如ArrayAdapter=newArrayAdapter(this,R.layout.spinner_项,list);但它给了我错误**无法解析构造函数数组适配器…**这个错误说它与我正在使用的截击库有关。我的适配器创建是否正确?在案例A中:如我所述,只需在自定义适配器中重写getView方法,在这种情况下,它是您的“ProvincAdapter”,在案例B中:使用BaseAdapter更改ArrayAdapter,一切都会正常进行。但是你必须自己处理“物品清单”。真的谢谢你,穆罕默德·赛义德。通过下面的案例B解决了这个问题。创建新样式并将其用作适配器上的布局。欢迎@SonicMaster^ ^ ^很荣幸^ ^案例a:我应该覆盖哪个类的getView方法?案例B:我尝试使用这种方法创建适配器,比如ArrayAdapter=newArrayAdapter(this,R.layout.spinner_项,list);但它给了我错误**无法解析构造函数数组适配器…**这个错误说它与我正在使用的截击库有关。我的适配器创建是否正确?在案例A中:如我所述,只需在自定义适配器中重写getView方法,在这种情况下,它是您的“ProvincAdapter”,在案例B中:使用BaseAdapter更改ArrayAdapter,一切都会正常进行。但是你必须自己处理“物品清单”。真的谢谢你,穆罕默德·赛义德。下面的案例B解决了这个问题。创建新样式并将其用作适配器上的布局。欢迎@SonicMaster^^这是一种荣幸^_^