【发布时间】:2017-08-01 18:26:36
【问题描述】:
在我的应用程序中,我正在使用回收站视图。我想在特定条件下显示和隐藏视图。但是当我滚动回收站视图时,我没有得到预期的行为。当我看到一个视图时,它对其他行也随机可见. 我的理解是,当它回收时它会重用视图,而当它回收的前一个视图时,它会找到该视图的可见性。如何在特定条件下隐藏视图?这是我的适配器代码
@Override
public void onBindViewHolder(UrduRhymesViewHolder holder, int position) {
RhymesModel current = mUrduRhymesList.get(position);
AppUtility.setCustomFont(mContext, holder.tvUrduRhymesName, Constants.HANDLEE_REGULAR);
holder.tvUrduRhymesName.setText(current.getRhymeName());
holder.ivUrduRhymesLogo.setImageUrl(current.getThumbnailUrl(), mImageRequest);
int status = AppUtility.getFavouriteStatus(mContext, current.getRhymeName(), new UrduRhymesDb(mContext));
if (status == 0)
holder.btnFavourite.setBackgroundResource(R.mipmap.btn_star_unactive);
else
holder.btnFavourite.setBackgroundResource(R.mipmap.btn_star);
ProgressbarDetails progressbarDetails = ProgressbarDetails.getProgressDetail(current.getRhymeName());
if (progressbarDetails == null) {
progressbarDetails = new ProgressbarDetails();
progressbarDetails.prgProgressBar = holder.pbRhymeDownload;
progressbarDetails.download_btn_settings = holder.downloadButtonLayout;
} else {
progressbarDetails.prgProgressBar = holder.pbRhymeDownload;
progressbarDetails.download_btn_settings = holder.downloadButtonLayout;
holder.pbRhymeDownload.setProgress(progressbarDetails.progress);
}
ProgressbarDetails.addUpdateProgressDetail(current.getRhymeName(), progressbarDetails);
if (progressbarDetails != null && progressbarDetails.isDownloading) {
Log.e("test","downloading foe position "+position );
holder.downloadButtonLayout.setBackgroundResource(R.mipmap.btn_download);
holder.pbRhymeDownload.setVisibility(View.VISIBLE);
holder.pbRhymeDownload.setProgress(progressbarDetails.progress);
} else {
Log.e("test","should not be visible for position "+position);
holder.pbRhymeDownload.setVisibility(View.GONE);
}
}
这里的progressbarDetails.isDownloading(值为true)是我想显示我的视图但不是隐藏我的视图的else子句的标准
编辑:这里 ProgressbarDetails (Singleton ) 是一个类,保持适配器进度条每一行的引用。
【问题讨论】:
-
什么是
progresbarDetails?请提供完整代码 -
可以添加适配器代码吗?
-
当我首先使用此代码检查可见性时,我在最后一个 else 子句中观察到的另一件事 if (holder.pbRhymeDownload.getVisibility() == View.VISIBLE) { Log.e("test", “可见的”); } else if(holder.pbRhymeDownload.getVisibility() == View.GONE){ Log.e("test","gone"); }else { Log.e("test","不知道");它说视图消失了,但在实际设备中我可以看到这个视图可见。背后的原因是什么?
标签: android