gpt4 book ai didi

android - 回收站 View 中的动态 View 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:12 26 4
gpt4 key购买 nike

我正在使用回收站 View 来显示包含图像网格布局的项目列表。网格布局动态添加到回收器 View 适配器上“onBindViewHolder”方法内的列表项。现在的问题是在每次滚动时都会重新创建网格布局 View 。我不希望在滚动时重新创建这些 View 。怎么处理??

这是代码 fragment

 @Override
public void onBindViewHolder(final PersonViewHolder personViewHolder, final int i) {

GridLayout feedGrid = new GridLayout(context);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(dipToPixels(context,HomePage.SCREEN_WIDTH),dipToPixels(context,HomePage.SCREEN_WIDTH));
feedGrid.setLayoutParams(layoutParams);
feedGrid.setColumnCount(1);

imgArr = new ImageView[num];
imgArr[0] = new ImageView(context);
GridLayout.Spec row = GridLayout.spec(0, 1);
GridLayout.Spec colspan = GridLayout.spec(0, 1);
GridLayout.LayoutParams gridLayoutParam = new GridLayout.LayoutParams(row, colspan);
gridLayoutParam.setGravity(Gravity.FILL);

Picasso.with(context).load(urlArr.get(0)).error(mDrawable).placeholder(mDrawable).into(imgArr[0], new Callback() {
@Override
public void onSuccess() {
personViewHolder.feedGridLayout.setVisibility(View.VISIBLE);
personViewHolder.loadImg.setVisibility(View.GONE);
}

@Override
public void onError() {
personViewHolder.feedGridLayout.setVisibility(View.GONE);
personViewHolder.loadImg.setVisibility(View.VISIBLE);

}

});



feedGrid.addView(imgArr[0], gridLayoutParam);

personViewHolder.feedGridLayout.removeAllViews();

personViewHolder.feedGridLayout.addView(feedGrid);

}

最佳答案

我就是这样解决了一个非常相似的 problem .

在您的适配器中,您覆盖了 onViewRecycled 并在那里删除了 gridLayout 的 View ,而不是 onBindViewHolder。

@Override
public void onViewRecycled(PersonViewHolder personViewHolder) {
super.onViewRecycled(personViewHolder);
personViewHolder.feedGridLayout.removeAllViews();
}

从您的 onBindViewHolder 中删除 personViewHolder.feedGridLayout.removeAllViews();

让我知道是否解决了问题。

关于android - 回收站 View 中的动态 View 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33167822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com