0

I have some data from api like:

"www.someUrl.com/someUrl.htm\ntel. +34 666 999 111"

or

"www.someUrl.com www.someUrl.com" - it is element.getTextDescription() in code below

I need to add this dynamically to android layout so i did something like this :

    private void prepareHeader(TextView textView, El element) {
      textView.setText(element.getTextDescription().replaceAll("\\\\n", "\n"));
    }

    private void prepareContent(TextView textView, El element) {
        textView.setText(element.getTextDescription().replaceAll("\\\\n", "\n"));

    }

    private void prepareTextViews(ArrayList<El> data) {
        for (int i = 0; i < data.size(); i++) {
            TextView textView = new TextView(this);
            El element = data.get(i);
            String[] splittedElement = element.getTextName().split("_");

            if (splittedElement.length == 2) {
                prepareHeader(textView, element);
            } else {
                prepareContent(textView, element);
            }

            if (i == 0) {
                textView.setPadding(40, 30, 0, 20);
            }

            essentialInfoContainer.addView(textView);
        }
    }

I don't know how to parse text which i get from api, and change part of it to clickable elements. I need something like this :

< it is clickable url element>www.someUrl.com/someUrl.htm< /it is clickable url element > + \ntel. + < it is clickable number element >+34 666 999 111< /it is clickable number element >

or

< it is clickable url element>www.someUrl.com< /it is clickable url element > < it is clickable url >www.someUrl.com< /it is clickable url >

sometimes element.getTextDescription() get me only regular string and then i would like to have: "regular string"

k.wichura
  • 3
  • 4
  • Welcome to Stack Overflow! Please take a look at this documentation page https://developer.android.com/reference/android/text/util/Linkify and sample app here https://github.com/googlesamples/android-TextLinkify. – Rawnald Gregory Erickson Jul 17 '19 at 22:55

1 Answers1

0

have a look at this post : Android set autoLink attribute programmatically your best bet is going to be to create these dynamic objects with the autoLink property (which you can also set in xml obviously).

Linkify.addLinks(your_text_view, Linkify.PHONE_NUMBERS);

as a more complete example. hope this somewhat helps, also, have a look at SpannableStringBuilder : https://developer.android.com/reference/android/text/SpannableStringBuilder which can help you achieve different looks for these clickable items. Also consider either creating separate textview items per item you want to show, either in code or xml, as this might be an easier solution to your problem. let me know if this doesn't answer your question and i'll see what i can do to edit it.

a_local_nobody
  • 7,947
  • 5
  • 29
  • 51