一切正常,但一件事情却没有真正起作用。 如您在图像中看到的那样,删除图标仅呈现在回收者视图列表的第一个元素上。
这是我的ItemTouchHelper类的代码:
class Sale: CustomStringConvertible {
var soldBy:String
var amount:Double
init(soldBy:String, amount:Double) {
self.soldBy = soldBy
self.amount = amount
}
//This lets us use string interpolation to display a `Sale` object
var description: String {
return "Sale(soldBy:\"\(soldBy)\",amount:\(amount)"
}
}
let sales: [Sale] = [Sale(soldBy: "ABC", amount: 1200.34),
Sale(soldBy: "ABC", amount: 999.34),
Sale(soldBy: "ABC", amount: 3499.99),
Sale(soldBy: "DEF", amount: 333.32),
Sale(soldBy: "DEF", amount: 778.12)]
let output: [Sale] = sales.reduce([String:Double]()) { (result, sale) -> [String:Double] in
var result = result
result[sale.soldBy, default: 0.0] += sale.amount
return result
}
//Map the dictionary from the above back to an array
.map { Sale(soldBy: $0.key, amount: $0.value) }
//Sort the output back into alphabetical order by soldBy (if desired)
//Note that sorting will take time, so only do this step if needed.
.sorted { $0.soldBy < $1.soldBy }
print(output)
也许加载在课程开头的图标只能使用一次?我已经尝试将其转换为位图并使用它。我还尝试将其加载到onChildDraw函数中。
答案 0 :(得分:2)
解决方案太简单了。我一直使用itemView.height
而不是itemView.top
。
画布包含所有项目。并非每个项目都有自己的画布。所以我也必须添加以上项目的高度。
工作代码如下:
val top = itemView.top + (itemView.height - intrinsicHeight) / 2
val left = itemView.width - intrinsicWidth - (itemView.height - intrinsicHeight) / 2
val right = left + intrinsicHeight
val bottom = top + intrinsicHeight
if (dX < 0) {
background.setBounds(itemView.right + dX.toInt(), itemView.top, itemView.right, itemView.bottom)
icon.setBounds(left, top, right, bottom)
} else if (dX > 0) {
background.setBounds(itemView.left + dX.toInt(), itemView.top, itemView.left, itemView.bottom)
icon.setBounds(top, top, top, bottom)
}
background.draw(c)
icon.draw(c)
答案 1 :(得分:0)
您是否检查了此参数的值:isCurrentlyActive?
我猜图像创建(图标)没有错误。因为图像是第一次成功创建的。因此,问题出在循环中。
if (dX < 0) {...}else{...}
在这里,无论dX的值如何,图像都会添加到子级(行)中。
if (dX != 0f && isCurrentlyActive)
这是代码中唯一的检查点。从技术上讲,如果isCurrentlyActive布尔值为false,则会跳过整个块。