I have a layout with a RecyclerView with the adapter:
public class SimpleRecyclerAdapter extends RecyclerView.Adapter<SimpleViewHolder> { protected List<JSONObject> data = new ArrayList<>(); public List<JSONObject> getData() { return data; } } I update it's adapter like:
public void udpdateFromJson( JSONObject payload ) { JSONArray msgs = payload.optJSONArray( "messages" ); for( int ix = 0; null != msgs && ix < msgs.length(); ix++ ){ JSONObject o = msgs.optJSONObject( ix ); if( loadingMore ) adapter.getData().add( 1 + ix, o ); else adapter.getData().add( o ); } adapter.notifyDataSetChanged(); recyclerView.invalidate(); } The problem is, that I get to see the new item only when I touch or scroll the view.
What am I missing?
UPDATE:
to fix the problem I replaced the lines
adapter.notifyDataSetChanged(); recyclerView.invalidate(); with
adapter.notifyItemRangeInserted( loadingMore ? 1 : 0, msgs.length() ); and it worked