- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 SwipeToDismissUndoList 在 ListView
中实现滑动删除扩展 Roman Nurik's SwipeToDismiss 的库样本。
我的问题是删除动画。由于 ListView
由 CursorAdapter
支持,动画会触发 onAnimationEnd
中的 onDismiss
回调,但这意味着在 CursorAdapter
使用删除更新之前,动画已运行并自行重置。
这对用户来说最终看起来像是一个闪烁,他们通过滑动删除笔记,然后 View 返回一瞬间然后消失,因为 CursorAdapter
已经拾取了数据改变。
这是我的OnDismissCallback
:
private SwipeDismissList.OnDismissCallback dismissCallback =
new SwipeDismissList.OnDismissCallback() {
@Override
public SwipeDismissList.Undoable onDismiss(ListView listView, final int position) {
Cursor c = mAdapter.getCursor();
c.moveToPosition(position);
final int id = c.getInt(Query._ID);
final Item item = Item.findById(getActivity(), id);
if (Log.LOGV) Log.v("Deleting item: " + item);
final ContentResolver cr = getActivity().getContentResolver();
cr.delete(Items.buildItemUri(id), null, null);
mAdapter.notifyDataSetChanged();
return new SwipeDismissList.Undoable() {
public void undo() {
if (Log.LOGV) Log.v("Restoring Item: " + item);
ContentValues cv = new ContentValues();
cv.put(Items._ID, item.getId());
cv.put(Items.ITEM_CONTENT, item.getContent());
cr.insert(Items.CONTENT_URI, cv);
}
};
}
};
最佳答案
我知道这个问题已被标记为“已回答”,但正如我在评论中指出的那样,使用 MatrixCursor 的问题在于效率太低。复制除要删除的行之外的所有行意味着行删除以线性时间运行(与 ListView 中的项目数成线性关系)。对于大数据和速度较慢的手机,这可能是 Not Acceptable 。
另一种方法是实现您自己的 AbstractCursor,它会忽略要删除的行。这导致假行删除在恒定时间内运行,并且在绘制时性能损失可以忽略不计。
示例实现:
public class CursorWithDelete extends AbstractCursor {
private Cursor cursor;
private int posToIgnore;
public CursorWithDelete(Cursor cursor, int posToRemove)
{
this.cursor = cursor;
this.posToIgnore = posToRemove;
}
@Override
public boolean onMove(int oldPosition, int newPosition)
{
if (newPosition < posToIgnore)
{
cursor.moveToPosition(newPosition);
}
else
{
cursor.moveToPosition(newPosition+1);
}
return true;
}
@Override
public int getCount()
{
return cursor.getCount() - 1;
}
@Override
public String[] getColumnNames()
{
return cursor.getColumnNames();
}
//etc.
//make sure to override all methods in AbstractCursor appropriately
按照之前的所有步骤进行操作,除了:
关于android - CursorAdapter 支持的 ListView 删除动画 "flickers"删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468100/
我最近从 Xcode 4.3 升级到 4.4,我正要沮丧地砸我的屏幕。 我遇到的问题是代码完成。当我输入一个变量或方法名称时,完成窗口会弹出它应该有的建议。但是,如果我尝试使用光标键在建议之间滚动,建
我在使用 jQuery 图像旋转器时遇到了一些问题。当快速单击下一个/上一个按钮两次时,图像会闪烁,您最终会看到两个图像。关于如何修复它有什么想法吗? 这是 HTML CSS
我已尽最大努力成为 Javascript/Ajax 技术的纯粹主义者,确保所有 Ajax-y 行为都是对基本功能的增强,而当禁用 Javascript 时,网站也能正常运行。但是,这会导致一些问题。
我的 Gatbsy 网站的页面加载时,未设置样式的内容“闪烁”。在此处查看当前部署预览可能最有帮助 https://happy-mahavira-5cd669.netlify.com/ . 到目前为止
背景:我们有一个嵌入式系统,可使用 10 位模数转换器将线性位置(0 毫米 - 40 毫米)从电位器电压转换为其数字值。 ------------------------ 0mm |
我尝试为伪元素宽度 css3 设置动画。一切都好。但在 Firefox (43.0.3) 上,动画结束时字体会闪烁: div { width:500px; height:500px; co
[已解决]:应用适当的列表迭代过程修复了问题。 (如下图) 我目前有一个程序,如果满足特定条件,列表中的元素将被迭代并删除。由于程序的性质,这可以直观地看到。 屏幕上正在迭代的对象有时会闪烁。这通常发
我有一个进度条,我想在用户单击某项时更新它。所以可以通过进度条来回前进。 目前,该栏似乎可以正常工作,但是该栏在闪烁,好像每秒都在加载该栏。例如,用户处于 70%,因此该条将填充到那里,然后清除,然后
我将 GridView 与图像项一起使用,通过 android DataBinding 技术 加载图像。如果向列表中添加一些新项目并通知适配器,那么 GridView 会闪烁,为什么会出现这种情况?如
我正在使用 KO 构建 SPA(单页应用程序)。该应用程序看起来像一本书,用户可以翻页。 问题是每次加载页面时,页面都会有短暂的“闪烁”,用户看到的是页面的无样式版本。我猜这是由于很多样式都依赖于 k
问题 如交互式 BaseTable API Playground 所示 here ,当我开始滚动时,跨行会闪烁开/关。 这是库中的一个已知错误,并且已经发布了很多关于它的问题: https://git
例如:我有一个 TFrame(称为 TPageFrame),它有许多控件,例如TreeView 左对齐、拆分器和由编辑和 RichEdit 组成的主客户区域,如下图所示: 代码看起来像这样: type
我正在尝试在 F# 中实现双缓冲。我遇到的所有示例都是 C#。 let r = form.DisplayRectangle let buffer = new Bitmap(r.Widt
我正在使用 grid 设计一个交互式绘图R 中的包。作为交互性的一部分,我反复删除并重新创建绘图的各个部分。但是,网格元素的总数(使用 grid.ls() 命令获得)保持不变;我创建的所有内容之前都已
场景如下:我有一些信息要显示在 ListView 上。每行都可以有标题、正文、日期、头像和更多数据。还有一个来自网络的 ImageView。 ImageView 的每一行都有不同的高度。我知道下载后它
我正在尝试制作数字时钟。它的问题之一是显示器会“闪烁”。换句话说,wx.StaticText 小部件(在本例中为 self.ST)将在很短的时间内变为空白。我相信原因可能在于 self.ST 更新的方
我似乎在使用在 Firefox(以及 iOS)中设置了“位置”的背景图像时遇到了问题。 在 iOS 上,当您滚动时图像会消失一秒钟,然后再回来。在 Firefox 上,它们只会在我使用 .animat
标题听起来有点乱,但我不想写得太长,所以请耐心阅读...... 我正在编写一个非常简单的 OpenGL 演示,它将图像加载为纹理,然后在屏幕上无限地水平滚动图像。以下是我如何加载纹理并渲染单帧: vo
我遇到了此处描述的相同问题:same problem ( fiddle :original fiddle)但我还不了解 JS,我在编写代码时正在学习,所以当我的 html 代码与现在有点不同时,我不知
您好 stackoverflow 社区... 我已将多个 (JavaFX) Menu 实例放入一个菜单中(位于 GluonMobile-View 的子节点中): 问题是,当类(class)器悬停其中一
我是一名优秀的程序员,十分优秀!