Би TextView дээрх үг бүрт onTouchListeners-ийг хуваарилахыг хүсч байна. (Интернет дээрх ямар нэгэн зүйлтэй холбох биш, харин апп доторх тоглоомын логикийг үргэлжлүүлэхийн тулд). Энэ үед миний тоглоомын ерөнхий үйл ажиллагаа бол TextView-ийг харах, үгэндээ хүрэх, хэрэв энэ нь таны хожсон зорилтот үг бол, өөрөөр хэлбэл өөрт хүрсэн текст дээр тулгуурлан өөр TextView-ийг ачаалах явдал юм. Одоо үүнийг хийх арга бол үг бүрийн ClickableSpans болон onClicks юм.
Гэхдээ би onTouchListeners-тэй байхыг илүүд үздэг тул touch_down дээр үгийн арын өнгийг өөрчилж, touch_up дээр тоглоомын логикийг илүү мэдрэмжтэй болгохын тулд хийж болно. Би үүнийг яаж хийж чадах вэ?
final TextView defTV = (TextView) findViewById(R.id.defTV);
text = new SpannableString(rv); // rv is the future clickable TextView text
ClickableSpan clickableSpan = null;
String regex = "\\w+";
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(text);
while (matcher.find()) {
final int begin = matcher.start();
final int end = matcher.end();
clickableSpan = new ClickableSpan() {
public void onClick(View arg0) {
String lword = (String) text.subSequence(begin, end).toString();
if (lword.equalsIgnoreCase(targetword)) {
// WIN
} else {
// Build new TextView based on lword, start over
}
}
};
text.setSpan(clickableSpan, begin, end, 0);
}