androidstringbuilderspanned

Set textview from returned value


I am creating a horizontal string which have colored bullet point between each text. The method which I've uses Spanned StringBuilder and return value as Html.fromHtml(builder.toString()). The problem is how to use that return value to set text in TextView.

public class MainActivity extends AppCompatActivity {

    TextView text;
    StringBuilder builder;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text = (TextView)findViewById(R.id.text);
        text.setText(Html.fromHtml(builder.toString()));

    }

    Spanned createSpannable(List<String> interests) {
        builder = new StringBuilder();
        int size = interests.size();
        for (int i = 0; i < size; i++) {
            builder.append(interests.get(i));
            if (i < size - 1) {
                builder.append(" <font color=\"#c52d08\">&#8226</font> ");
            }
        }

        return Html.fromHtml(builder.toString());
    }

}

Solution

  • Try this:

    public class MainActivity extends AppCompatActivity {
    
        TextView text;
        StringBuilder builder;
        Spanned mSpanned;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            text = (TextView)findViewById(R.id.text);
            mSpanned = createSpannable(YourList); //Pass your list
            text.setText(mSpanned);
    
        }
    
        Spanned createSpannable(List<String> interests) {
            builder = new StringBuilder();
            int size = interests.size();
            for (int i = 0; i < size; i++) {
                builder.append(interests.get(i));
                if (i < size - 1) {
                    builder.append(" <font color=\"#c52d08\">&#8226</font> ");
                }
            }
            return Html.fromHtml(builder.toString());
        }
    
    }