This is :) and want to :) replace with :D new image.
EditTextbox'dan aldığım bu tür bir dizim var.NOw image1 ve ": D" ile tüm ":)" i değiştirmek istiyorum (": D", image2) .Yani herkes ne kadar küçük kod ile bunu benden önerebilirsiniz ve ayrıca daha iyi performance.I var image2.I string.replaceall (":)", image1) ve string.replaceall gibi yapmak istiyorum Kodu yaz ve iyi çalışıyor ama çok zaman alıyor.Karakterleri Görüntü dizisi ile değiştirin ve sonra da Textview olarak ayarlayın
textview.setText(getSmiledText(ctx, stringvalue));
private static final HashMap<String, Integer> emoticons = new HashMap<String, Integer>();
static {
emoticons.put(":)", R.drawable.j1);
emoticons.put(":D", R.drawable.j2);}
public static Spannable getSmiledText(Context context, String s) {
int index;
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(s);
for (index = 0; index < builder.length(); index++) {
for (Entry<String, Integer> entry : emoticons.entrySet()) {
int length = entry.getKey().length();
if (index + length > builder.length())
continue;
if (builder.subSequence(index, index + length).toString()
.equals(entry.getKey())) {
builder.setSpan(new ImageSpan(context, entry.getValue()),
index, index + length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
index += length - 1;
break;
}
}
}
return builder;
}
'da soru tekrar ne nedenle fine' çalışıyor? – njzk2
i benzer var ... çalışma ama buna setSpan' yavaş parçası olan 'görünüyor – Nency
i daha iyi bir çözüm gerek character.So tarafından karakteri kontrol edecek BCz fazla zaman alabilir performansta artacak daha iyi bir çözüm gerek metnin arkaplan rengini değiştirmeyle ilgili sorun. – bancer