添加和删除TextView Android的删除线
大家好,我在文本视图中添加删除线时遇到问题。这就是我现在正在做的:添加和删除TextView Android的删除线,android,android-checkbox,Android,Android Checkbox,大家好,我在文本视图中添加删除线时遇到问题。这就是我现在正在做的: private void initControls() { tvNote = (TextView) findViewById (R.id.textView1); tvNote.setVisibility(View.GONE); fillData(); } private void fillData() { dbConnect(); // Array list of
private void initControls() {
tvNote = (TextView) findViewById (R.id.textView1);
tvNote.setVisibility(View.GONE);
fillData();
}
private void fillData() {
dbConnect();
// Array list of sync data items
ArrayList<SyncDataItems> itemList = new ArrayList<SyncDataItems>();
List<Todos> todos = dbHelper.getAllTodos();
SyncDataItems _items;
for (Todos cn : todos) {
String log = "ID: " + cn.getID() + " , Todo: " + cn.getTodo();
Log.e("Todo List ", log);
_items = new SyncDataItems(cn.getTodo(), cn.getTodo(), true);
itemList.add(_items);
}
dataAdapter = new MyCustomAdapter(this, R.layout.item_info, itemList);
listView = (ListView) findViewById(R.id.listView1);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
if(dataAdapter.getCount() == 0) {
tvNote.setVisibility(View.VISIBLE);
tvNote.setText("No Records Yet");
}
}
private class MyCustomAdapter extends ArrayAdapter<SyncDataItems> {
private ArrayList<SyncDataItems> itemList;
public MyCustomAdapter(Context context, int textViewResourceId,
ArrayList<SyncDataItems> itemList) {
super(context, textViewResourceId, itemList);
this.itemList = new ArrayList<SyncDataItems>();
this.itemList.addAll(itemList);
}
private class ViewHolder {
TextView code;
CheckBox name;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
holder = null;
Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.item_info, null);
holder = new ViewHolder();
holder.code = (TextView) convertView.findViewById(R.id.code);
holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
convertView.setTag(holder);
holder.name.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
SyncDataItems _item = (SyncDataItems) cb.getTag();
_item.setSelected(cb.isChecked());
holder.name.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if ( isChecked ) {
Log.e("TAG", "Checked!");
holder.code.append("Checked!");
holder.code.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
} else {
holder.code.setPaintFlags(holder.code.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
Log.e("TAG", "Unchecked!");
}
}
});
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
final SyncDataItems item = itemList.get(position);
holder.code.setText(item.getItem());
holder.name.setChecked(item.isSelected());
holder.name.setTag(item);
return convertView;
}
}
private void initControls(){
tvNote=(TextView)findViewById(R.id.textView1);
tvNote.setVisibility(View.GONE);
fillData();
}
私有void fillData(){
dbConnect();
//同步数据项的数组列表
ArrayList itemList=新建ArrayList();
List todos=dbHelper.getAllTodos();
SyncDataItems\u项目;
for(Todos cn:Todos){
字符串log=“ID:”+cn.getID()+”,Todo:“+cn.getTodo();
Log.e(“待办事项清单”,Log);
_items=新的SyncDataItems(cn.getTodo(),cn.getTodo(),true);
项目列表。添加(_个项目);
}
dataAdapter=新的MyCustomAdapter(this,R.layout.item\u info,itemList);
listView=(listView)findViewById(R.id.listView1);
//将适配器分配给ListView
setAdapter(dataAdapter);
if(dataAdapter.getCount()==0){
tvNote.setVisibility(View.VISIBLE);
tvNote.setText(“尚未记录”);
}
}
私有类MyCustomAdapter扩展了ArrayAdapter{
私有arraylistitemlist;
公共MyCustomAdapter(上下文,int textViewResourceId,
ArrayList项目列表){
super(上下文、textViewResourceId、itemList);
this.itemList=新的ArrayList();
this.itemList.addAll(itemList);
}
私有类视窗持有者{
文本视图代码;
复选框名称;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
holder=null;
Log.v(“ConvertView”,String.valueOf(position));
if(convertView==null){
LayoutInflater vi=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=vi.充气(R.布局.项目信息,空);
holder=新的ViewHolder();
holder.code=(TextView)convertView.findViewById(R.id.code);
holder.name=(复选框)convertView.findViewById(R.id.checkBox1);
convertView.setTag(支架);
holder.name.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
复选框cb=(复选框)v;
SyncDataItems _item=(SyncDataItems)cb.getTag();
_选择项(cb.isChecked());
holder.name.setOnCheckedChangeListener(新的OnCheckedChangeListener(){
检查更改后的公共无效(复合按钮视图,布尔值已检查){
如果(已检查){
Log.e(“TAG”,“Checked!”);
holder.code.append(“选中!”);
holder.code.setPaintFlags(Paint.STRIKE_-THRU_-TEXT_-FLAG | Paint.ANTI_-ALIAS_-FLAG);
}否则{
holder.code.setPaintFlags(holder.code.getPaintFlags()&(~Paint.STRIKE_-to_-TEXT_-FLAG));
Log.e(“TAG”,“Unchecked!”);
}
}
});
}
});
}否则{
holder=(ViewHolder)convertView.getTag();
}
final SyncDataItems item=itemList.get(位置);
holder.code.setText(item.getItem());
holder.name.setChecked(item.isSelected());
持有人.名称.集合标签(项目);
返回视图;
}
}
但是,当我选中或取消选中复选框时,删除线效果不起作用。有什么想法吗?我们将非常感谢你的帮助。谢谢。已选中,请更改
holder.code.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
到
它应该可以工作。您可以使用:
holder.code.setPaintFlags(tv.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
删除作为某个视图一部分的任何文本的划线的最短方法
tvNote.setPaintFlags(0);
您是否替换了上面提到的setPaintFlags,并请指定您是否在复选框事件上获取“选中”和“未选中”的日志是的,我获取的日志显示复选框正在被选中或未选中。我想知道为什么它没有删除线样式这使得文本看起来很清晰,而不是回到原来的样子
tvNote.setPaintFlags(0);