如何用CheckBox在Listview中实现删除线文本?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用CheckBox在Listview中实现删除线文本?相关的知识,希望对你有一定的参考价值。
我有一个带CheckBox和TextView的ListView。但是当我点击Checkbox时,我无法获得删除文字。但是当我点击最后一个复选框时,我会得到删除文字。
这是我的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();
}
});
答案
我相信它与这些线有关:
if (listViewHolder.checkBox.isChecked()){
listViewHolder.textInListView.setPaintFlags(listViewHolder.textInListView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
listViewHolder.checkBox.setChecked(true);
看一下listViewHolder指向的是什么,然后在实际调用listViewHolder.checkBox.setChecked(true)之前执行isChecked()。看起来像是一个时间问题
以上是关于如何用CheckBox在Listview中实现删除线文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何用Python编写代码在Word中实现带公式计算过程的计算书?