выбранный флажок становится желтым во фрагменте

у меня проблема с флажком в listview с фрагментом.

Почему при нажатии на флажок это желтый?я не могу видеть символ проверки; в то время как в действии это нормально….Я покажу вам скриншот.

Я надеюсь, что вы можете помочь мне!

Спасибо

Введите описание изображения здесь

КОД XML:

<LinearLayout 
    
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_orientation="horizontal" >

    <CheckBox 
        android_id="@+id/chk_box"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_alignParentLeft="true" />
    <LinearLayout
        android_id="@+id/linearLayout1"
        android_layout_width="0dp"
        android_layout_height="wrap_content"
        android_layout_marginLeft="5dp"
        android_orientation="vertical"
        android_layout_weight="1" >

    <TextView
        android_id="@+id/name"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_toRightOf="@id/chk_box"
        android_textStyle="bold" />
    <LinearLayout
        android_layout_width="match_parent"
        android_layout_height="match_parent">
    <TextView
        android_id="@+id/dist"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_below="@id/name"
        android_layout_toRightOf="@id/chk_box"
        android_textSize="12sp"
        android_textStyle="italic" />
        <TextView
            android_id="@+id/valuta"
            android_layout_width="wrap_content"
            android_layout_height="wrap_content"
            android_layout_marginLeft="5dp"
            android_textSize="12sp"
            android_textStyle="italic" />
    </LinearLayout>
    <EditText
        android_layout_width="196dp"
        android_layout_height="wrap_content"
        android_inputType="number"
        android_ems="10"
        android_id="@+id/editText"
        android_hint="quantità"
        >
    </EditText>
    </LinearLayout>

</LinearLayout>

КОД АДАПТЕРА:

class PlanetAdapter extends ArrayAdapter<Planet> implements CompoundButton.OnCheckedChangeListener

{

    private List<Planet> planetList;
    private Context context;
    ArrayList<Planet> objects;


    public  PlanetAdapter(List<Planet> planetList, Context context) {
        super(context, R.layout.single_listview_item, planetList);
        this.planetList = planetList;
        this.context = context;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

    }


    public  class PlanetHolder  {
        public TextView planetName;
        public TextView distView;
        public TextView valuta;
        public CheckBox chkBox;
        public EditText edit;
        public String quantità;



    }

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

View row = convertView;
        PlanetHolder holder = null;
        if (row == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            row = inflater.inflate(R.layout.single_listview_item, parent, false);
            holder = new PlanetHolder();
            holder.planetName = (TextView) row.findViewById(R.id.name);
            holder.distView = (TextView) row.findViewById(R.id.dist);
            holder.valuta = (TextView) row.findViewById(R.id.valuta);
            holder.chkBox = (CheckBox) row.findViewById(R.id.chk_box);
            holder.edit = (EditText) row.findViewById(R.id.editText);
            holder.edit.setVisibility(View.GONE);
            holder.edit.setEnabled(false);
            row.setTag(holder);
        } else {
            holder = (PlanetHolder) row.getTag();
        }
        final Planet p = planetList.get(position);

        holder.chkBox.setOnCheckedChangeListener(PlanetAdapter.this);
        final PlanetHolder finalHolder = holder;
        holder.chkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (finalHolder.chkBox.isChecked()) {
                    finalHolder.edit.setVisibility(View.VISIBLE);
                    finalHolder.edit.setEnabled(true);
                    finalHolder.edit.addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                        }

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                        }

                        @Override
                        public void afterTextChanged(Editable s) {
                            p.setQuantità(finalHolder.edit.getText().toString().trim());

                        }
                    });
                } else {
                    finalHolder.edit.setVisibility(View.GONE);
                    finalHolder.edit.setEnabled(false);
                    finalHolder.edit.setText(null);
                }
            }
        });
        holder.planetName.setText(p.getName());
        holder.distView.setText("" + p.getDistance());
        holder.valuta.setText(""+p.getValuta());
        holder.chkBox.setChecked(p.isSelected());
        holder.chkBox.setTag(p);
        holder.edit.setEnabled(false);

        return row;
    }


    ArrayList<Planet> getBox() {
        ArrayList<Planet> box = new ArrayList<Planet>();
        for (Planet p : planetList) {
            if (p.selected)
                box.add(p);
        }
        return box;
    }


}

1 ответ

  1. Вы можете установить свой макет флажка, как это, я надеюсь, что это поможет вам.

    <CheckBox 
            android_id="@+id/chk_box"
            android_layout_width="wrap_content"
            android_layout_height="wrap_content"
            android_checked="false"
            android_button="@drawable/custom_checkbox"
            android_layout_alignParentLeft="true" />
    

    и ваш пользовательский флажок xml-файл

    <?xml version="1.0" encoding="utf-8"?>
    <selector >
        <item android_state_checked="true"
            android_drawable="@drawable/checked" />
        <item android_state_pressed="true"
            android_drawable="@drawable/upchecked" />
        <item android_drawable="@drawable/upchecked" />
    </selector>
    

    и проверено или отменено ваше изображение, что когда-либо вы хотите установить. Больше информации вы посещаете это http://androidexample.com/Custom_Checkbox_With_The_Use_Of_Selectors_And_Shapes/index.php?view=article_discription&aid=80