извините за мой плохой английский, и я новичок в кодировании. Я в основном копировал учебное видео с Youtube https://www.youtube.com/watch?v=mvVcqzJYAbY
и у меня не было с этим серьезных проблем, но ближе к концу части 2vid при тестировании «ListNews.kt» почти закончил, щелкнув по имени веб-сайта и завершению работы приложения
E / RecyclerView: адаптер не подключен;пропуская макет
вот что я написал (Android Studio, androidx проверено)
РЕДАКТИРОВАТЬ: похоже, NullPointerException решил thx
ListNews.kt
lass ListNews : AppCompatActivity() {
var source = ""
var webHotUrl: String? = ""
lateinit var dialog: AlertDialog
lateinit var mService: NewsService
lateinit var adapter: ListNewsAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_list_news)
// init view
mService = Common.newsService
dialog = SpotsDialog(this)
swipe_to_refresh.setOnRefreshListener { loadNews(source, true) }
diagonalLayout.setOnClickListener {
// implement soon
}
list_news.setHasFixedSize(true)
list_news.layoutManager = LinearLayoutManager(this)
if(intent != null) {
source = intent.getStringExtra("source")
if(source.isNotEmpty()) {
loadNews(source, false)
}
}
}
private fun loadNews(source: String?, isRefreshed: Boolean) {
if (isRefreshed) {
dialog.show()
mService.getNewsFromSource(Common.getNewsAPI(source!!))
.enqueue(object : Callback<News>{
override fun onFailure(call: Call<News>, t: Throwable) {
}
override fun onResponse(call: Call<News>, response: Response<News>?) {
dialog.dismiss()
// Get first article to hot news
Picasso.with(baseContext)
.load(response!!.body()!!.articles!![0].title)
.into(top_image)
top_title.text = response!!.body()!!.articles!![0].title
top_author.text = response!!.body()!!.articles!![0].author
webHotUrl = response!!.body()!!.articles!![0].url
// Load all remain articles
val removeFirstItem = response!!.body()!!.articles
// Because we get first item to hot new, so we need remove it
removeFirstItem!!.removeAt(0)
adapter = ListNewsAdapter(removeFirstItem!!, baseContext)
adapter.notifyDataSetChanged()
list_news.adapter = adapter
}
})
}
ListNewAdapter