标签:tail 界面设计 点击 博客 登录 listen git 目的 adapter
//define interface
public interface OnRecyclerViewItemClickListener {
void onItemClick(View view, int data);
}
public interface OnRecyclerItemLongListener{
void onItemLongClick(View view,int position);
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
public void setOnItemLongClickListener(OnRecyclerItemLongListener listener){
this.mOnItemLong = listener;
}
(2)在ViewHolder中实现接口并重写方法
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
//注意这里使用getTag方法获取数据
mOnItemClickListener.onItemClick(v, getAdapterPosition());
}
}
@Override
public boolean onLongClick(View v) {
if(mOnItemLong != null){
mOnItemLong.onItemLongClick(v,getPosition());
}
return true;
}
(3)在活动实现这两个方法
adapter.setOnItemClickListener(new AlarmPresetAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int data) {
T.showShort(context, "点击了");
}
});
adapter.setOnItemLongClickListener(new AlarmPresetAdapter.OnRecyclerItemLongListener() {
@Override
public void onItemLongClick(View view, int position) {
T.showShort(context, "长按了");
}
});
解决方案:参考博客:Recyclerview.getLayoutPosition()问题
使用了ViewHolder的getLayoutPosition方法,此方法返回的pos值与onBindViewHolder方法传入的position值有可能不同。
根据SDK中的解释,在Recyclerview 进行添加、移除item等操作时,position位置可能会变化,而所有的adapter的刷新并不总是及时的,只有这个方法返回的才是当前item经过一些变换后所处的真正位置。
getPosition()方法已过时,getAdapterPosition()方法的刷新不够及时,使用时可能会出错,而使用getLayoutPosition()方法则没有这种顾虑,最终在两个onclick方法都使用了getLayoutPosition()方法,解决问题。
问题记录及解决过程:
为了完成好需求规格说明书,我们在码云上新建了一个项目,然后想要将它和自己的Android Studio连上。在这个过程中我遭遇到了不少的问题。
首先,不太记得如何连接码云的我先上百度找来了一个教程,挺详细的,AndroidStudio新建项目推送到码云上。我跟着这个教程一步步的去实现。
然后我确实出现了如教程中一样的结果。
但之后遇到的问题就不是如此,我在终端输入命令行,但一直出现错误
之后,我向队友寻求帮助。
先
结果出现了超时的问题,就是使用git clone重新checkout源也受到影响,长时间checkout不出来。
然后找了一个很好的解决方法。
解决Gitlab的The remote end hung up unexpectedly错误
寻找R文件
关于在ViewPager的子页面中不能跳转的问题
标签:tail 界面设计 点击 博客 登录 listen git 目的 adapter
原文地址:https://www.cnblogs.com/hzy0628/p/10103973.html