Change theme
Help
Press space for more information.
Show links for this issue (Shortcut: i, l)
Copy issue ID
Previous Issue (Shortcut: k)
Next Issue (Shortcut: j)
Sign in to use full features.
Vote: I am impacted
Notification menu
Refresh (Shortcut: Shift+r)
Go home (Shortcut: u)
Pending code changes (auto-populated)
View issue level access limits(Press Alt + Right arrow for more information)
Unintended behavior
View staffing
Attachment actions
Description
Version used: 1.2.1
Devices/Android versions reproduced on: Tablet Emulator API 31 and Samsung Phone, Oppo F17 Pro Phone
If this is a bug in the library, we would appreciate if you could attach:
I am working with recycler view, but it was behaving differently now.
The issue is when we scroll from **top to bottom** all things work okay, but when scrolling **bottom to top** it not working as expected.
I am loading arround **450 Items**.
Please find more details in the attached video (Last Few Seconds Very Important).
Video :
Gradle dependencies
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
//RecyclerView
implementation 'androidx.recyclerview:recyclerview:1.2.1'
//Other dependencies
XML Code
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="
xmlns:app="
xmlns:tools="
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rcvJobList"
android:layout_width="match_parent"
android:layout_height="@dimen/_400sdp"
android:background="@drawable/box2"
android:clipChildren="false"
android:paddingTop="@dimen/_5sdp"
android:paddingBottom="@dimen/_5sdp"
tools:itemCount="20"
tools:listitem="@layout/item_job" />
</androidx.constraintlayout.widget.ConstraintLayout>
Activity Code
class HomeActivity : BaseActivity<HomeViewModel, ActivityHomeBinding, HomeRepository>(),
RcvJobListAdapter.AdapterListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Other Code
ViewModel.jobList.observe(this, jobListObserver)
}
// Live data observer code
val jobListObserver = Observer<List<Job>> {
Log.e("HomeActivity", "Job List Observer Invoked Size : ${it.size}");
var tempList = arrayListOf<Job>()
tempList.addAll(it)
var adapter = RcvJobListAdapter(tempList, this@HomeActivity)
binding.rcvJobList.adapter = adapter
}
}
Adapter Code
class RcvJobListAdapter : RecyclerView.Adapter<RcvJobListAdapter.ViewHolder> {
var jobList: List<Job> = emptyList()
private lateinit var callback: AdapterListener
constructor(
jobList: List<Job>,
callback: AdapterListener,
) : super() {
this.jobList = jobList
this.callback = callback
}
class ViewHolder(var itemView: View) : RecyclerView.ViewHolder(itemView)
{
var binding = ItemJobBinding.bind(itemView)
init {
binding.root.setBackgroundColor(Color.WHITE)
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.item_job,parent,false)
)
}
var prevPosition : Int = -1
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
Log.e("Adapter","Bind Pos : ${holder.bindingAdapterPosition}, Absolute : ${holder.absoluteAdapterPosition} , Last ${prevPosition}")
var job = jobList.get(holder.bindingAdapterPosition)
holder.binding.tvJobText.setText("${holder.bindingAdapterPosition}\n${job.getCombainedString()}")
holder.binding.tvJobText.setOnClickListener {
if(prevPosition!=-1)
{
var temp = prevPosition
prevPosition = -1;
notifyItemChanged(temp)
if(temp == holder.bindingAdapterPosition)
{
return@setOnClickListener
}
}
prevPosition = holder.bindingAdapterPosition
holder.binding.root.setBackgroundColor(Color.parseColor("#BCF1C9"))
}
if(prevPosition == holder.bindingAdapterPosition)
{
holder.binding.root.setBackgroundColor(Color.parseColor("#BCF1C9"))
}
else
{
holder.binding.root.setBackgroundColor(Color.WHITE)
}
}
override fun getItemCount(): Int = jobList.size
open interface AdapterListener {
fun jobItemClick(position: Int, job: Job);
}
}
- A screenrecord or screenshots showing the issue (if UI related).