Использование Spans для замены нескольких экземпляров

Я использую код ниже, чтобы изменить экземпляры [text] с изображением. Код, который у меня есть, заменяет первый экземпляр по мере необходимости, но игнорирует вхождение друг друга. Я хотел бы изменить каждый экземпляр [text] из содержимого содержимого строки, например:

Hello this is [text] a test [test] sample of input [text] string. Текст в скобках может отличаться каждый раз.

Код:

public SpannableStringBuilder smileyConvert(String msgBody) {
    SpannableStringBuilder ssb = new SpannableStringBuilder(msgBody);


    if( msgBody.contains("[") && msgBody.contains("]") ){
        setStartEnd(msgBody);

        AssetManager am = ctx.getAssets();
        InputStream imgStream = null;
        try{
            imgStream = am.open("emotes/" + ico + ".gif");
        }catch(IOException e){
            e.printStackTrace();
        }
        Bitmap smiley = BitmapFactory.decodeStream(imgStream);
        smiley = sizeBitmap(smiley);
        ssb.setSpan(new ImageSpan(ctx, smiley), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        return ssb;
    }else
        return ssb;
}


 public void setStartEnd(String msgBody) {

    start = msgBody.indexOf("[");
    end = (msgBody.indexOf("]") + 1);


    return;
}

Любые советы будут оценены.

0 ответов

Другие вопросы по тегам