This is my code for onBindViewHolder
:
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
myHolder = holder;
text = mDataset.get(keys[position]);
myHolder.singleItemTextView.setText(text);
}
And this is my code to add data to the RecyclerView:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
myDataset = new LinkedHashMap<>();
mAdapter = new HashMapAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
myDataset.put("1", "Hello");
myDataset.put("2", "World");
mAdapter.notifyDataSetChanged();
The above code is not working, I get java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
. But when I put the data before using setAdapter(mAdapter)
everything is working:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
myDataset = new LinkedHashMap<>();
myDataset.put("1", "Hello");
myDataset.put("2", "World");
mAdapter = new HashMapAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
How can I first set adapter, and then add items without getting this error? I need it because I dynamically add items and at first the dataset is empty so I set an adapter with empty dataset.