Это расширение для Kotlin, использующее Gson для десериализации локального файла json, который я опубликовал ранее.
Я хочу, чтобы NewsFragment.kt создал экземпляр адаптера, но у меня нет доступа к идентификатору recyclerview id worldnews. Я получаю «java.lang.IllegalStateException: worldnews не должно быть нулевым», когда программа пытается выполнить приведенный ниже код:
activity?.runOnUiThread {
worldnews.adapter = MainAdapter(homeFeed)
}
NewsFragment.kt:
class NewsFragment : Fragment() {
var arr = arrayListOf<String>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
read_json()
}
fun read_json(){
var json : String? = null
try {
val inputStream: InputStream = context!!.assets.open("sample.json")
json = inputStream.bufferedReader().use { it.readText() }
val gson = GsonBuilder().create()
val homeFeed = gson.fromJson(json, HomeFeed::class.java)
activity?.runOnUiThread {
worldnews.adapter = MainAdapter(homeFeed)
}
} catch (e: IOException) {
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_news, container, false)
view.worldnews.layoutManager = LinearLayoutManager(activity)
return view
}
}
class HomeFeed(val News: List<News>)
class News(val title: String, val description: String, val time: String, val link: String)
sample.json:
{"News": [{"title": "Intesa expected to approve state-backed loan for FCA -source","description": "Italy's biggest retail bank Intesa Sanpaolo is expected to give conditional approval at a board meeting on Tuesday to a state-guaranteed $6.3 billion euro three-year loan for Fiat Chrysler (FCA), a source close to the matter said.", "time": "9:38am EDT","link": "https://www.reuters.com//article/health-coronavirus-fiat-chrylser-loan/intesa-expected-to-approve-state-backed-loan-for-fca-source-idUSS8N2B200A"}, {"title": "CANADA STOCKS-TSX opens higher on hopes of economic recovery", "description": "Canada's main stock index rose in early trade on Monday as investors looked to an eventual economic recovery from the coronavirus with more countries scaling back lockdown measures.", "time": "9:37am EDT", "link": "https://www.reuters.com//article/canada-stocks/canada-stocks-tsx-opens-higher-on-hopes-of-economic-recovery-idUSL4N2D7257"}, {"title": "Bars, gyms reopen as Iceland exits emergency coronavirus alert", "description": "Iceland eased its national alert against the coronavirus on Monday, allowing for public gatherings of up to 200 people and night clubs and gyms to reopen as the country nears complete recovery from the outbreak.", "time": "9:20am EDT", "link": "https://www.reuters.com//article/health-coronavirus-iceland/bars-gyms-reopen-as-iceland-exits-emergency-coronavirus-alert-idUSL8N2D71YX"}]}
Вы вызываете свою read_json()функцию в блоке onCreate вашего фрагмента, в этот момент ваше представление равно нулю.
Переместите вызов при read_json из onCreate в onViewCreated.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
read_json(view)
}
В дополнение к этому в функции read_json измените worldnews на view.worldnews:
activity?.runOnUiThread {
view.worldnews.adapter = MainAdapter(homeFeed)
}
Представление еще не было расширено, поэтому worldnewsне существует при выполнении read_json().
Двигайтесь read_json()внутрь onResume.
override fun onResume() {
super.onResume()
read_json()
}
В противном случае вы можете получить к нему доступ, только указав сначала расширенное представление, как вы уже делаете в своем onCreate:
view.worldnews.layoutManager = LinearLayoutManager(activity)
Яна Дуггар открыто говорила о своих поисках любви. Вот все, что она сказала на эту тему и о своем пятилетнем окне для замужества.
Звезда «Чужестранки» Сэм Хьюэн недавно рассказал, что он возьмет со съемочной площадки, чтобы вспомнить Джейми Фрейзера, роль, которая сделала его звездой.
«She Loves You» была написана за час, записана за день и стала песней The Beatles с одним из лучших исполнений в их карьере.
У Долли Партон и ее бабушки Бесси были особые отношения. Бабушка Партон была очень больна, но это не мешало Долли разыгрывать ее.
Истоки ислама восходят к началу VII века на Аравийском полуострове. Ислам зародился в Мекке, где человек по имени Мухаммад, преуспевающий торговец из могущественного племени, получил божественное откровение.
Вы можете подумать, что дуб или гикори — прочные породы дерева, но когда речь идет о самой твердой древесине в мире, они даже близко не стоят.
Океан полон красоты, но он также скрывает одних из самых страшных морских существ на планете. Многие из этих животных скрываются глубоко под поверхностью океана, в тёмном, полном давления мире морских глубин.
Если вы сражаетесь с враждебными мобами или готовитесь к PvP-боям, знание лучших чар для мечей в Minecraft может дать вам серьёзное преимущество. Зачарование мечей позволяет наносить больше урона, увеличивать количество выпадающих мобов и продлевать срок службы меча.
В «Детях» появится громкая камео и несколько разрушительных новостей
Утверждается, что этот RAV4 находится в отличном состоянии и готов к игре в музыкальные стулья.
На кадрах, снятых с дрона, видно, как пожарные изо всех сил пытаются потушить пламя.
«Глаза Ваканды» напрямую связаны с MCU, а также обновления о «Людях Икс '97», «Что, если...», «Сорвиголова» и многом другом.
Бессменный главный редактор, присоединившийся к американскому Vogue в 1988 году, объявил эту новость на совещании сотрудников утром в четверг, 26 июня.
Ава Гарднер была замужем за Микки Руни и Фрэнком Синтрой, и встречалась с несколькими другими голливудскими звездами. Вот взгляд назад на историю знакомств Авы Гарднер.
Джон Клиз женился на Дженнифер Уэйд в 2012 году. Вот все, что нужно знать о жене Джона Клиза, Дженнифер Уэйд.
Олимпийская чемпионка Эллисон Феликс вышла замуж за своего мужа Кеннета Фергюсона в 2018 году. Вот все, что нужно знать о муже Эллисон Феликс, Кеннете Фергюсоне.
Это поражает меня Внезапно, как это часто бывает, Это снова и снова на полпути <Нет, не то, что в Тихом океане, ты темно-бордовый, то, что на карнавале> Каждый громкий заголовок…..
В 2022 году, с выпуском GPT-3, навыки письма, кажется, стали менее важными. С помощью ИИ люди с плохим письмом также могут генерировать качественный персонал.
В современном быстро меняющемся и конкурентном мире карьера играет важную роль в личностном росте, финансовой стабильности и общей удовлетворенности жизнью. Однако многие люди оказываются в безжалостном цикле застоя и неудовлетворенности, постепенно угасая в своей профессиональной жизни.
На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.