 <p>The problem is you didn't implement <code>getItemId()</code>. You are calling the superclass implementation, which simply returns the same value for all positions.</p> <p>At the very least, you can do this:</p> <pre><code>@Override public long getItemId(int position) { return position; } </code></pre> <p>But if your data items actually have meaningful IDs, you should return the ID of the item instead.</p> <pre><code>@Override public long getItemId(int position) { return rinfoList.get(position).getId(); } </code></pre>