Для клика ImageView вам нужно создать пользовательский адаптер для вашего списка.
И в методе adfater getView()
просто напишите imageView's onClick()
, и начните свою новую деятельность с onClick () этого изображения.
Для пользовательского списка просто посмотрите на этот учебник Серия Android: пользовательские элементы и адаптеры ListView ..
Отчет об ошибке, поданный OP:
Что было разрешено (исправлено для овладения 3 января 2017 г.), и, следовательно, больше не будет проблемой в предстоящем Swift 3.1.
Это кажется ошибкой (не присутствует в Swift 2.2, всего 3.0), связанный со случаем:
!
) для не менее 3 членов выражения (проверено с использованием, по меньшей мере, 2 основных операторов, например +
или -
). x!
в выражении). Для всех приведенных ниже примеров пусть:
let a: String? = "a"
let b: String? = "b"
let c: String? = "c"
Присутствует ошибка:
// example 1
a! + b! + c!
/* error: ambiguous reference to member '+' */
// example 2
var d: String = a! + b! + c!
/* error: ambiguous reference to member '+' */
// example 3
var d: String? = a! + b! + c!
/* error: cannot convert value of type 'String'
to specified type 'String?' */
// example 4
var d: String?
d = a! + b! + c!
/* error: cannot assign value of type 'String'
to specified type 'String?' */
// example 5 (not just for type String and '+' operator)
let a: Int? = 1
let b: Int? = 2
let c: Int? = 3
var d: Int? = a! + b! + c!
/* error: cannot convert value of type 'Int'
to specified type 'Int?' */
var e: Int? = a! - b! - c! // same error
Ошибка отсутствует:
/* example 1 */
var d: String? = a! + b!
/* example 2 */
let aa = a!
let bb = b!
let cc = c!
var d: String? = aa + bb + cc
var e: String = aa + bb + cc
/* example 3 */
var d: String? = String(a!) + String(b!) + String(c!)
Однако, поскольку это Swift 3.0-dev, я не уверен, что это действительно «ошибка», а также то, что политика сообщая «ошибки» в еще не-производственной версии кода, но, возможно, вы должны на этот раз подать радар для этого.
Что касается ответа на ваш вопрос, как обойти эту проблему:
var d: String? = nil
if let a = a, b = b, c = c {
d = a + b + c
} /* if any of a, b or c are 'nil', d will remain as 'nil';
otherwise, the concenation of their unwrapped values */
let val: String? = "nil"
val.flatMap({(str: String) -> String? in
return str + "value"
})
func getSingleValue(_ value: String?..., seperator: String = " ") -> String? {
return value.reduce("") {
($0) + seperator + ($1 ?? "")
}.trimmingCharacters(in: CharacterSet(charactersIn: seperator) )
}
let q: String? = "Hello"
let w: String? = "World"
let r: String? = "!"
var array = [q, w, r]
print(array.flatMap { $0 }.reduce("", {$0 + $1}))
// HelloWorld!
let q: String? = "Hello"
let w: String? = nil
let r: String? = "!"
var array = [q, w, r]
print(array.flatMap { $0 }.reduce("", {$0 + $1}))
// Hello!