我正在尝试使用Glide加载我的图片时实施RecyclerView。但由于某种原因,它只会加载最初的几张图像来填充屏幕,但在滚动时,它不会继续加载新图像。
请注意,我正在使用一个包含片段的活动,并且在该片段中是我拥有RecyclerView的地方。
以下是我如何实施此RecyclerView的代码。
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// inflate the view used for this fragment
View rootView = inflater.inflate(R.layout.fragment_monster_list, container, false);
// getting reference to the monster list recyclerview.
mMonsterListRV = (RecyclerView) rootView.findViewById(R.id.rv_monster_list);
// Create the recyclerview for the monster list fragment
mMonsterListAdapter = new MonsterListAdapter(getContext(), this);
mMonsterListRV.setAdapter(mMonsterListAdapter);
mGridLayoutManager = new GridLayoutManager(getContext(), 2,
GridLayoutManager.VERTICAL, false);
mMonsterListRV.setLayoutManager(mGridLayoutManager);
return rootView;
}
这是我的适配器的代码,直到onBindViewHolder
public class MonsterListAdapter extends RecyclerView.Adapter<MonsterListAdapter.MonsterListViewHolder> {
// create member variable for list of monster icons
private int[] mMonsterIconList;
private Context mContext;
private OnClickHandler mOnClickHandler;
// create interface for onclick
public interface OnClickHandler {
void onClick(int monsterSelected);
}
public MonsterListAdapter (Context context, OnClickHandler onClickHandler) {
mMonsterIconList = DataUtilities.getMonsterIconList();
mContext = context;
mOnClickHandler = onClickHandler;
}
@Override
public MonsterListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// inflate the view holder
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recyclerview_monster_list, parent, false);
MonsterListViewHolder viewHolder = new MonsterListViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MonsterListViewHolder holder, int position) {
// Glide implementation
Glide.with(mContext).load(mMonsterIconList[position]).into(holder.mMonsterIcon);
}
答案 0 :(得分:0)
我似乎已经解决了这个问题。我不完全明白是什么造成的,但这就是我的所作所为。
将我的所有图像重新缩放到(200,200)后,所有图像再次正确加载。
我认为是由此造成的: 首先,我对android dev非常新,事实上我之前没有任何编程经验,所以我在下面会说的是纯粹的猜测。
当我尝试用毕加索替换Glide时,我会出现内存不足的错误。只有在将图像调整到(200,200)之后才开始正常工作。然后我用Glide做了同样的事情,制作了图像(200,200),它开始按预期工作。
所以我的猜测是,我的图片太大,在回收者视图中加载时可能会造成某种内存问题。