【问题标题】:How to realize strikethrough text in Listview with CheckBox?如何使用 CheckBox 在 Listview 中实现删除线文本?
【发布时间】:2019-03-21 13:28:13
【问题描述】:

我有一个带有 CheckBox 和 TextView 的 ListView。但是当我单击复选框时,我无法获得删除线文本。但是当我点击最后一个复选框时,我得到了删除线文本。

这是我的 GetView:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
         ViewHolder listViewHolder;
        if(convertView == null){
            listViewHolder = new ViewHolder();
            convertView = lInflater.inflate(R.layout.listview_with_checkbox, parent, false);

            listViewHolder.textInListView = (TextView)convertView.findViewById(R.id.textView);
            listViewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkBox);
            convertView.setTag(listViewHolder);
        }else{
            listViewHolder = (ViewHolder)convertView.getTag();

        }
        listViewHolder.textInListView.setText(listStorage.get(position).getName());
        listViewHolder.checkBox.setChecked(false);
        listViewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (listViewHolder.checkBox.isChecked()){
                    listViewHolder.textInListView.setPaintFlags(listViewHolder.textInListView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                    listViewHolder.checkBox.setChecked(true);


                }else{
                    listViewHolder.checkBox.setChecked(false);

                }
            }
        });

        return convertView;
    }

这是我的主要:

ListView listViewWithCheckBox = (ListView)RootView1.findViewById(R.id.listView);
        List<AimsDiaryCheckBoxBolvanka> listViewItems = new ArrayList<AimsDiaryCheckBoxBolvanka>();

        listViewItems.add(new AimsDiaryCheckBoxBolvanka("Nigeria"));
        listViewItems.add(new AimsDiaryCheckBoxBolvanka("Ghana"));
        listViewItems.add(new AimsDiaryCheckBoxBolvanka("Senegal"));
        listViewItems.add(new AimsDiaryCheckBoxBolvanka("OPA"));
        listViewItems.add(new AimsDiaryCheckBoxBolvanka("KNIGA"));
        listViewWithCheckBox.setAdapter(new AimsDiaryCheckBoxAdapter(getContext(), listViewItems));
        listViewWithCheckBox.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// make Toast when click
                Toast.makeText(getActivity().getApplicationContext(), "Position " + position, Toast.LENGTH_LONG).show();
            }
        });

【问题讨论】:

    标签: android-listview android-checkbox strikethrough


    【解决方案1】:

    我认为这与以下几行有关:

    if (listViewHolder.checkBox.isChecked()){
                        listViewHolder.textInListView.setPaintFlags(listViewHolder.textInListView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                        listViewHolder.checkBox.setChecked(true);
    

    在实际调用 listViewHolder.checkBox.setChecked(true) 之前,查看 listViewHolder 指向的内容,并且您正在执行 isChecked()。看起来是时间问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多