This is :) and want to :) replace with :D new image.
Tengo este tipo de cadena que tengo de EditTextbox.NOw quiero reemplazar todo ":)" con image1 y ": D" con imagen2.Quiero hacer como string.replaceall (":)", image1) y string.replaceall (": D", image2). Así que alguien me puede sugerir cómo hacer esto con un código pequeño y también un mejor rendimiento. Tengo escriba el código y también funciona bien, pero lleva mucho tiempo.Reemplazar los caracteres con Imagen en cadena y luego establecer en Textview
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;
}
'se está trabajando también fine' así que lo que era la pregunta? – njzk2
necesito la mejor solución que aumentará el rendimiento. Esto está funcionando pero lleva mucho tiempo bcz comprobará carácter por carácter. Así que necesito una mejor solución – Nency
parece que 'setSpan' es la parte más lenta ... Tengo la similar problema con la sustitución del color de fondo del texto. – bancer