自定义ListView(多选)

Customise ListView (Multiple Choices)

我正在尝试更改具有多个选项的 ListView 的文本颜色。我发现了很多关于它的问题,但大多数答案都建议创建一个 TextView 布局并将其分配给适配器作为解决方案。当我这样做时,复选框消失了。

adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_multiple_choice, countries);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);

main_activity.xml

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:scrollbarThumbVertical="@drawable/scroll"
    />

您可以覆盖 arrayAdapter 中的 getView 方法并像这样设置文本颜色。

ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, countries) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = converteView; 
            if(v = null)
                v = LayoutInflater.from(YourActivity.this).inflate(android.R.layout.simple_list_item_multiple_choice, null);

            TextView tv = (TextView) v.findViewById(android.R.id.text1);
            tv.setTextColor("Your_color");

            return v;
        }
    };
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);

我正在为遇到同样问题的其他人发布此信息。我只是稍微修改了 Yaw Asare 的答案,它起作用了:

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, countries){
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {


        View view = super.getView(position, convertView, parent);

        TextView mytextview=(TextView)view;
        mytextview.setTextColor(Color.BLUE);
        mytextview.setTextSize(14);
        // Other code you may want to add

        return view;
    }
};