我有gridview
使用FirebaseRecyclerAdapter
的9个项目。我想用新的图片网址随机替换3个项目:
grid = new SpanningGridLayoutManager(MainActivity.this, 3);
memePreview.setLayoutManager(grid);
recyclerAdapter = new FirebaseRecyclerAdapter<MemeAdapter, mViewHolder>(MemeAdapter.class, R.layout.meme_preview,
mViewHolder.class, reference.limitToLast(9).orderByChild("time")) {
@Override
protected void populateViewHolder(final mViewHolder viewHolder, final MemeAdapter model, final int position) {
viewHolder.memePreview(model.getImage(), getApplicationContext());
}
};
memePreview.setAdapter(recyclerAdapter);
Meme适配器
public class MemeAdapter {
private String image, user, tag;
private long lols, down , time;
public MemeAdapter(String image, String tag, String user){
this.image = image;
this.tag = tag;
this.user = user;
this.lols = 0;
this.down = 0;
this.time = new Date().getTime() * -1;
}
public MemeAdapter(){}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
} //more getters and setters
延长GridLayoutManager
以使其适合屏幕中的所有项目
SpanningGridLayoutManager.java
我想要在List<String>
如何更换这些图像?以下是我的观点:
答案 0 :(得分:2)
试试这个。
public int[] generateRandomPositions(){
int[] positions = new int[3];
Random r = new Random();
int i1 = r.nextInt(8);
positions[0] = i1;
step1:
do{
i1 = r.nextInt(8);
}while(positions[0] == i1);
positions[1] = i1;
do{
i1 = r.nextInt(8);
}
while(positions[1] == i1 || positions[0] == i1);
positions[2] = i1;
return positions;
}
然后在需要更新gridView时使用它
// rest of the code
arrayList.remove(positions[0]);
arrayList.put(positions[0], url1);
adapter.notifyItemInserted(positions[0])
arrayList.remove(positions[1]);
arrayList.put(positions[1], url2);
adapter.notifyItemInserted(positions[1])
arrayList.remove(positions[2]);
arrayList.put(positions[2], url3);
adapter.notifyItemInserted(positions[2])
// rest of the code