如何在可扩展列表视图中将文本视图标记为删除线

How to mark textview as strike through in Expandable Listview

当我在可扩展列表视图项上调用操作模式时,其中一个选项是标记为完成。

我在 onActionItemClicked 中所做的,其中 child_clicked 只是长按的视图:

TextView row = (TextView) child_clicked.findViewById(R.id.todoTitle);
if (todo.getStatus() == 1) {
    int count = mSQLiteHelper.MarkTodoAsComplete(Id, mSQLiteDatabase);
    row.setPaintFlags(row.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
} else {
    int count = mSQLiteHelper.MarkTodoAsActive(Id, mSQLiteDatabase);
    row.setPaintFlags(row.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
}

行布局看起来像这样:

<LinearLayout> 
    <TextView android:id="@+id/todoTitle"/>
</LinearLayout>

但是什么也没有发生,没有错误。必须在这里做什么才能使这项工作正常进行?

将此代码应用于 ExpandableListView 项目的 TextView。

tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

前面提到的可扩展列表视图方法不起作用。您应该像这样将新对象传递给 Hashmap。如果您已经在适配器中设置,则无需添加删除线。

   Todo newTodo;
     if (todo.getStatus() == 1) {
     newTodo = new Todo(todo.getTitle(), todo.getCategory(), 0, todo.getId_() );
    int count = mSQLiteHelper.MarkTodoAsComplete(Id, mSQLiteDatabase);

   } else {
   newTodo = new Todo(todo.getTitle(), todo.getCategory(), 1, todo.getId_() );
  int count = mSQLiteHelper.MarkTodoAsActive(Id, mSQLiteDatabase);

                }

            switch (todo.getCategory()) {

                case 0:
                    L1.set(childPosition, newTodo);
                    ChildList.put(Headings.get(6), L1);
                        break;

...
}

 mTodoExpandableAdapter.notifyDataSetChanged();

就是这样。希望这有帮助。