Skip to content

Instantly share code, notes, and snippets.

@james04gr
Created April 9, 2019 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save james04gr/e1e6744170de153221e5a6eb697ee3c1 to your computer and use it in GitHub Desktop.
Save james04gr/e1e6744170de153221e5a6eb697ee3c1 to your computer and use it in GitHub Desktop.
NotifDataSetChanged doesnt reload Recyclers Data
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_rss_news)
actionBar?.setDisplayHomeAsUpEnabled(true)
viewManager = LinearLayoutManager(this@RssNewsActivity)
viewAdapter = RssRecyclerAdapter(this@RssNewsActivity, itemsList)
recyclerView = findViewById<RecyclerView>(R.id.recyclerView).apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = viewAdapter
}
recyclerSwipe.setOnRefreshListener {
refreshRssNews()
}
refreshRssNews()
}
private fun refreshRssNews() {
recyclerSwipe.isRefreshing = true
RssRequests.rssFeedRequest(object : RequestInterfaces.VolleyCallbackRss {
override fun onSuccess(string: String) {
itemsList = RssParser.parseFeed(string)
recyclerView.adapter = RssRecyclerAdapter(this@RssNewsActivity, itemsList)
toggleViewsVisibility(false)
// Here notifyDatasetChanged() should work but it does not
// Instead i make a new Instance of the adatpter
}
override fun onError(volleyError: VolleyError) {
toggleViewsVisibility(true)
}
})
}
@james04gr
Copy link
Author

class RssRecyclerAdapter(private val activityContext: Context, list: List) :
RecyclerView.Adapter() {

private val articleList: List<Item>

init {
    this.articleList = ArrayList()
    this.articleList.addAll(list)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RssViewHolder {
    val view = LayoutInflater.from(activityContext)
        .inflate(R.layout.rss_item, parent, false)

    return RssViewHolder(view)
}

override fun getItemCount(): Int {
    return articleList.size
}

override fun onBindViewHolder(holder: RssViewHolder, position: Int) {

    val item = articleList[position]

    holder.title.text = item.title
    holder.description.text = item.description
    holder.pudDate.text = item.pubDate

    Glide.with(activityContext).load(item.media).into(holder.image)

    holder.view.setOnClickListener{

        if (item.link.isEmpty())
            Toast.makeText(activityContext, "URL unavailable", Toast.LENGTH_SHORT).show()

        else {
            val packageManager = activityContext.packageManager
            val uri = Uri.parse(item.link)
            val intent = Intent(Intent.ACTION_VIEW, uri)

            if (intent.resolveActivity(packageManager) != null)
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                activityContext.startActivity(intent)
        }
    }
}

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment