我正在尝试实现一种在RecyclerView上处理项目选择的方法.我个人不喜欢在一些答案中建议的方式通过手势,我认为实现一个OnClickListener,如建议here和here,是waaay清洁.

事实是……这种模式实际上并不起作用!我真的无法理解为什么我的OnClickListener.onClick永远不会被调用.它有点像另一种方法拦截点击之前onClick可以处理它.

这是我的代码:

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

TextView tvName;

ImageView star;

public ViewHolder(View itemView) {

super(itemView);

tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name);

star = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_star);

Fonts.setTypeface(tvName, regular);

}

@Override

public void onClick(View view) {

int position = getLayoutPosition();

select(position);

}

}

不幸的是,能够访问整个数据集中被点击项目的位置非常重要,以便将其删除,所以做一些像indexOfChild这样的事情也是不可接受的:我试过,但是这个方法给你的位置列表的可见部分中的项目,因此使list.remove(位置)不可能.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐