respondy.body() возвращает экземпляр класса MyResponse со всеми нужными данными, т.е. руками ничего не придется заполнять. Просто перенеси эти поля в конструктор, вот так.
class MyResponse(var users: UserResponse)
class UserResponse(@SerializedName("data") var userItems: List<UserItem>)
foonfyrick, У тебя постоянно выводится разный ответ, потому-что вывод происходит до того, как все запущенныев CoroutineScope(Dispatchers.IO).launch { ... } корутины закончат свое выполнение. Попробуй посмотреть дебагером значение переменной int или добавить перед Log.e("@@@ withContext @@@", int.toString()) задержку в, скажем, пару секунд.
По каким источникам изучаешь?
Я бы рекомендовал в целом почитать начиная отсюда https://kotlinlang.org/docs/reference/coroutines/c...
Там как раз есть раздел про обработку тайм-аутов родным для корутин способом
Использовать get это no-no, он же блокирует поток. С корутинами в этом необходимости не будет. Но код придется немного (правда, немного) переписать.
Вы текст из файла выводите в textp, который создаёте внутри Listener и никуда не добавляете. Любой элемент GUI надо добавить в JPanel, чтобы он отобразился.
Подчеркну, что именно который создаёте в Listener. Переменная с таким же именем из метода gui никого отношения к JTextArea, в который вы текст на самом деле вводите, не имеет.