I have generic class
public abstract class BaseAdapter<T> extends RecyclerView.Adapter {
private List<T> itemsList = new ArrayList<>();
//other override methods
@Override
public long getItemId(int position) {
return position;
}
}
What is the correct way to implementing getItemId()? I think that return position
like in many example is not correct.
Adapter. RecyclerView includes a new kind of adapter. It's a similar approach to the ones you already used, but with some peculiarities, such as a required ViewHolder . You will have to override two main methods: one to inflate the view and its view holder, and another one to bind data to the view.
The getItemId method is largely designed to work with Cursors that are backed by SQLite databases. It will return the underlying cursor's id field for the item in position 1.
A ViewHolder describes an item view and metadata about its place within the RecyclerView. Adapter implementations should subclass ViewHolder and add fields for caching potentially expensive findViewById results. While LayoutParams belong to the LayoutManager , ViewHolders belong to the adapter.
Create a base interface that has a method that returns a type long
eg.
interface BaseInterface{
long getId();
}
Change
abstract class BaseAdapter<T> extends RecyclerView.Adapter
to
abstract class BaseAdapter<T extends BaseInterface> extends RecyclerView.Adapter {
Note: The signature changed to T extends BaseInterface
Replace
@Override
public long getItemId(int position) {
return position;
}
with
@Override
public long getItemId(int position) {
return itemsList.get(position).getId();
}
In the List you could only return the Id of the Item available at specific row as mentioned by Google documents:
getItemId
Get the row id associated with the specified position in the list.
But that's not the case with RecyclerView, in RecyclerView you have to ensure that you either return a unique Id for each Item or In case of no Stable Id you should return RecyclerView.NO_ID
(-1). Please Refrain from returning values that are not stable. (An Stable value would be a unique value that does not change even if position of dataset changes)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With