【发布时间】:2025-11-28 06:10:01
【问题描述】:
这是我的onBindViewHolder 代码:
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
myHolder = holder;
text = mDataset.get(keys[position]);
myHolder.singleItemTextView.setText(text);
}
这是我将数据添加到 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();
上面的代码不起作用,我得到java.lang.ArrayIndexOutOfBoundsException: length=0; index=0。但是当我在使用setAdapter(mAdapter) 之前将数据放入时,一切正常:
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);
如何先设置适配器,然后添加项目而不会出现此错误?我需要它,因为我动态添加项目,起初数据集是空的,所以我设置了一个带有空数据集的适配器。
【问题讨论】:
-
myDataset是托管数据,但您使用position来索引一些keys数组。您需要展示如何管理该阵列 - 将此答案用作指南:*.com/a/5234718/2711811。
标签: android android-recyclerview