在我的应用程序中,我有一个RecyclerView。RecyclerView的每个项目都包含代表书签项目的ImageView。
我实现了一个逻辑,在自定义适配器中的onBindViewHolder()方法中检查用于切换ImageView内容(书签状态)的项状态。
我的问题是,当我滚动视图时,我得到了回收的ImageView的资产,尽管我的逻辑是在onBindViewHolder()上实现的。
我已经尝试了这些解决方案,但没有帮助:
每个人都说必须在onBindViewHolder()方法中实现逻辑,并使逻辑依赖于数据模型,但我已经做到了。
这是我的回收适配器。java代码:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.BasicViewHolder> {
Context mContext;
List<DataModel> mDataModels;
public RecyclerAdapter(Context context, List<DataModel> dataModels) {
mContext = context;
mDataModels = dataModels;
}
@Override
public BasicViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
int layoutIdForListItem = R.layout.item_layout;
LayoutInflater inflater = LayoutInflater.from(context);
boolean shouldAttachToParentImmediately = false;
View view = inflater.inflate(layoutIdForListItem, parent, shouldAttachToParentImmediately);
BasicViewHolder viewHolder = new BasicViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(BasicViewHolder holder, int position) {
holder.bind(position);
}
@Override
public int getItemCount() {
return mDataModels.size();
}
public class BasicViewHolder extends RecyclerView.ViewHolder {
public final TextView titleTextView;
public final ImageView bookmarkImageView;
public BasicViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
titleTextView = itemView.findViewById(R.id.textView);
bookmarkImageView = itemView.findViewById(R.id.imageView);
}
void bind(int listIndex) {
titleTextView.setText(mDataModels.get(listIndex).getTitle());
//I think here is where the problem is being caused
if(mDataModels.get(listIndex).isSelected()) bookmarkImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_bookmark));
}
}
}
DataModelList仅指示更改位置1处项目的ImageView
不过,其他项目在滚动时会获得相同的ImageView
我希望你们能帮助我,谢谢你的时间。
代码的问题在于,只有在选中要绑定的项目时,才更新bookmarkImageView
。由于视图回收的工作方式,确保始终更新每个视图很重要。在您的情况下,这意味着在选中项目时显示书签,在未选中项目时隐藏书签。
试试这样:
if (mDataModels.get(listIndex).isSelected()) {
bookmarkImageView.setImageResource(R.drawable.ic_bookmark);
} else {
bookmarkImageView.setImageDrawable(null);
}
我的应用程序中的CoordinatorLayout中的平滑滚动有问题。 我试图做到这一点:http://wstaw.org/m/2015/10/02/google-scroll.gif 但我最好的结果是:http://wstaw.org/m/2015/10/02/my-scroll.gif 我做错了什么?提前感谢。
当我在回收器视图中选择一个项目时,会自动选择多个项目 我正在做的是 我只想获取没有重复的联系人,并在recyclerview中列出所有联系人,并使两个文本视图可见(一个用于数字,第二个用于名称)。完成了,但问题是 当我点击一个项目时,它会被点击4次(例如,如果我点击一个项目,它会显示两个文本视图,但具有相同名称和编号的相同项目会显示出来,就像我点击了4个项目并看到图片一样) 适配器类 在那里我得到
我正在开发一个应用程序,它显示带有。当我滚动的值被清除时。 下面是我的代码 适配器类别: 数据模型类 不知道我哪里做错了。
我有这样的场景: 从IncomingMessage表中获取(读取和删除)记录 读取记录内容 在某些表中插入某些内容 如果在步骤1-3中出现错误(任何异常),请将错误记录插入OutgoingMessage表 否则,将成功记录插入OutgoingMessage表 因此步骤1、2、3、4应该在事务中,或者步骤1、2、3、5 但是当SqlCommandHandlerService.persist()抛出异
问题内容: 我一直在尝试建立一个简单的logback项目,以按日期和文件大小滚动日志文件,到目前为止,我还无法使我的附加程序滚动到另一个文件。而是将其写入 标记指定的日志。 这是我的logback.xml配置文件: 乍看起来,它应该可以工作,对吗?我做错什么了吗?我的整个可构建项目都可以在此处的zip中找到:http://www.mediafire.com/file/2bxokkdyz2i/log
所以,这就是我的问题。我的recyclerview项目在底部有一个视图,我最初将其设置为消失。现在,当它们被点击时,我想让它们再次可见。所以在onClick方法中,我将视图设置为Visible。一切正常,但是当我向下滚动和向上滚动时,视图又隐藏了。我想这和取景模式有关。我想保持现状,即开放。我该怎么做?谢了。 视图支架: 点击: 编辑:上传的代码。此外,我尝试在onClick中更新Item的布尔值