0

I am trying to get JSON data into a spinner.

val product_sizes = productfeed.variants.joinToString { variants -> variants.option_values[0].name }
    Log.d("TAG", "TESTING:: ${product_sizes} ")

this is the output:

TESTING:: SMALL, MEDIUM, LARGE, 1 XL, 2 XL, 3 XL, SMALL, MEDIUM, LARGE, 1 XL, 2 XL, 3 XL, SMALL, MEDIUM, LARGE, 1 XL, 2 XL, 3 XL, SMALL, MEDIUM, LARGE, 1 XL, 2 XL, 3 XL, SMALL, MEDIUM, LARGE, 1 XL, 2 XL, 3 XL

I want to get only one set of the sizes into a spinner not 5 of them. I have also tried:

 val product_sizes = productfeed.variants.joinToString { variants -> variants.option_values[0].name.toSet().toList().toString() }
    Log.d("TAG", "TESTING:: ${product_sizes} ")

The output was:

TESTING:: [S, M, A, L], [M, E, D, I, U], [L, A, R, G, E], [1, , X, L], [2, , X, L], [3, , X, L], [S, M, A, L], [M, E, D, I, U], [L, A, R, G, E], [1, , X, L], [2, , X, L], [3, , X, L], [S, M, A, L], [M, E, D, I, U], [L, A, R, G, E], [1, , X, L], [2, , X, L], [3, , X, L], [S, M, A, L], [M, E, D, I, U], [L, A, R, G, E], [1, , X, L], [2, , X, L], [3, , X, L], [S, M, A, L], [M, E, D, I, U], [L, A, R, G, E], [1, , X, L], [2, , X, L], [3, , X, L]

Please help. Thank you!

1 Answers1

2

You should convert the list to a Set before you join, not after

val product_sizes = productfeed.variants
                               .map { it.option_values[0].name }
                               .toSet()
                               .joinToString()
Log.d("TAG", "TESTING:: ${product_sizes} ")

The output then will be

TESTING:: SMALL, MEDIUM, LARGE, 1 XL, 2 XL, 3 XL

You can also use distincBy to omit a map operator.

val product_sizes = productfeed.variants
                               .distincBy { it.option_values[0].name }
                               .joinToString { it.option_values[0].name }
Log.d("TAG", "TESTING:: ${product_sizes} ")
Sơn Phan
  • 1,120
  • 6
  • 12