Recently i learn how user github api but something i curious about , how can i make endless scrolling in recycler view
here my mainActivity.kt
class MainActivity : AppCompatActivity()
{
private lateinit var binding: ActivityMainBinding
private lateinit var viewModel :MainViewModel
private lateinit var adapter: userAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
adapter = userAdapter()
adapter.notifyDataSetChanged()
viewModel = ViewModelProvider(this,ViewModelProvider.NewInstanceFactory()).get(MainViewModel::class.java)
binding.apply {
recyclerview.layoutManager = LinearLayoutManager(this@MainActivity)
recyclerview.setHasFixedSize(false)
recyclerview.adapter = adapter
btnSearch.setOnClickListener {
searchUsers()
}
etQuery.setOnKeyListener { v, keyCode, event ->
if (event.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER){
searchUsers()
return@setOnKeyListener true
}
return@setOnKeyListener false
}
}
}
private fun searchUsers(){
binding.apply {
val query = etQuery.text.toString()
if(query.isEmpty()) return
viewModel.setSearchUsers(query)
}
viewModel.getSearchUsers().observe(this,{
if (it!=null){
adapter.setList(it)
}
})
}
}
Adapter.kt
here is my adapter, i have tried to change like function still doesnt work
// class userAdapter : RecyclerView.Adapter<userAdapter.UserViewHolder>() { private val list = ArrayList()
fun setList(user: ArrayList<user>){
list.clear()
list.addAll(user)
notifyDataSetChanged()
}
inner class UserViewHolder(val binding: UserItemListBinding) : RecyclerView.ViewHolder(binding.root){
fun bind(user: user){
binding.apply {
Glide.with(itemView)
.load(user.avatar_url)
.transition(DrawableTransitionOptions.withCrossFade())
.centerCrop()
.into(userpropic)
username.text = user.login
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
val view = UserItemListBinding.inflate(LayoutInflater.from(parent.context),parent,false)
return UserViewHolder((view))
}
override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
holder.bind(list[position])
}
override fun getItemCount(): Int = list.size
}
Adapter.kt
here is my adapter, i have tried to change like function still doesnt work