Android RecyclerView的使用过程遇到的问题
RecyclerView滚动显示图片
文章共867字 · 阅读需要大约3分钟
一键AI生成摘要,助你高效阅读
问答
·
RecyclerView滚动显示图片
一概述
本来关于Recycler的博客鸿洋大神已经写的非常好请看 Android 自定义RecyclerView 实现真正的Gallery效果:为了加强记忆,我补充一些在我实现时遇到的问题
二 我遇到的问题
1在重写recyclerView 的适配器遇到的问题:
public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder>
static public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
public ImageView img;
public TextView text;
}
这里重用布局视图自定义的类需要用静态类,且在继承RecyclerView.Adapter
private OnClickListener OnItemClickListener;
public OnClickListener getOnItemClickListener() {
return OnItemClickListener;
}
public void setOnItemClickListener(OnClickListener onItemClickListener) {
OnItemClickListener = onItemClickListener;
}
@Override
public void onBindViewHolder(ViewHolder mViewHolder, final int position) {
mViewHolder.img.setImageResource(listImgs.get(position));
mViewHolder.text.setText(String.valueOf(position));
if (OnItemClickListener!=null) {
mViewHolder.itemView.setOnClickListener(OnItemClickListener);
}
在写recyclerview的点击事件时我首先想到的不是自定义的回调接口而是用的系统的OnClickListener 的单击回调接口,在onBindViewHolder中调用回调接口
if (OnItemClickListener!=null) {
mViewHolder.itemView.setOnClickListener(OnItemClickListener);
}
那么在主界面怎样设置图片资源:
myAdapter.setOnItemClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { img.setImageDrawable(((ImageView)v.findViewById(R.id.imgItem)).getDrawable());
}
});
R.id.imgItem是recyclerview中项的xml文件中imgview对应id
当然也可以自定义回调方法,多定义一个参数就行
interface CallBack{
void onclik(View view,int position);
}
if (callBack!=null) {
mViewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callBack.onclik(v, position);
}
});
}
2在重写Recyclerview中遇到的问题
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
super.onLayout(changed, l, t, r, b);
crrentView=getChildAt(0);
if (onChangeLister!=null) {
onChangeLister.onChange(crrentView);
}
}
这是初始化img
public void onScrolled(int arg0, int arg1) {
View newView=getChildAt(0);
if (onChangeLister!=null) {
if (!newView.equals(crrentView)) {
crrentView=newView;
onChangeLister.onChange(newView);
}
}
}
这个是滚动时替换imgview
三总结
回调的使用:一个a类调用本类中定义的回调接口,在需要使用的b类中实现接口,一种通过a类中接口方法的参数传递给b类数据
更多推荐
已为社区贡献2条内容
所有评论(0)