在我的应用程序中,我应该显示来自服务器的一些数据,对于这一项,我会创建选项按钮,当单击此选项按钮时,会向用户显示该项的其他数据。
请看下图了解我的意思:

当单击“.”更改布局并显示其他数据时,当单击"✕"时,关闭该布局并再次显示第一个布局。
我可以在单击.时显示其他布局,在单击✕时可以关闭此布局。
但是,当滚动recyclerView关闭此布局(信息布局)并显示基本布局(带有图像)时,我希望在滚动recyclerView时自动完成此工作。
例如, :如果显示信息布局,当滚动 recyclerView关闭此信息布局并再次显示基本布局时。
我在适配器中使用这些代码。
点击时.按钮:
holder.tvTonightOpenMoreInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
YoYo.with(Techniques.SlideInDown)
.duration(500)
.withListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
holder.tvTonightOpenMoreInfo.setVisibility(View.GONE);
holder.tvTonightCloseMoreInfo.setVisibility(View.VISIBLE);
holder.tvTonightMoreInfoLay.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
})
.playOn(holder.tvTonightMoreInfoLay);
}
});时单击✕按钮:
holder.tvTonightCloseMoreInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
YoYo.with(Techniques.SlideOutUp)
.duration(500)
.withListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
holder.tvTonightOpenMoreInfo.setVisibility(View.VISIBLE);
holder.tvTonightCloseMoreInfo.setVisibility(View.GONE);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
})
.playOn(holder.tvTonightMoreInfoLay);
}
});当滚动 recyclerView调用此代码时,我希望:
holder.tvTonightCloseMoreInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
YoYo.with(Techniques.SlideOutUp)
.duration(500)
.withListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
holder.tvTonightOpenMoreInfo.setVisibility(View.VISIBLE);
holder.tvTonightCloseMoreInfo.setVisibility(View.GONE);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
})
.playOn(holder.tvTonightMoreInfoLay);
}
});在活动中初始化recyclerView :
layoutManager = new GridLayoutManager(context, 2);
filterRecyclerView.setLayoutManager(layoutManager);
filterRecyclerView.setHasFixedSize(true);
filterRecyclerView.setAdapter(tvTonightAdapter);我怎么能做到呢?请帮我我的friend<3
发布于 2017-07-29 17:54:40
为此,您应该使用一个标志,例如布尔值。
为此,您应该在滚动recyclerView并将此标志传递给适配器时获得。
如本代码:
boolean closeInfoLay = false;
filterRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0 || dy < 0) {
closeInfoLay = true;
} else {
closeInfoLay = false;
}
adapter.notifyDataSetChanged();
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
}
super.onScrollStateChanged(recyclerView, newState);
}
});将标志传递给适配器:
adapter = new YOURADAPTER(context, model, closeInfoLay);在适配器中,更改构造函数:
private boolean closeInfoLay;
public TvToNightListAdapter(Context context, List<ModelList> model, boolean closeInfoLay) {
this.context = context;
this.model = model;
this.closeInfoLay = closeInfoLay;
}然后关闭布局:
if (closeInfoLay) {
YoYo.with(Techniques.SlideOutUp)
.duration(500)
.withListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
holder.tvTonightOpenMoreInfo.setVisibility(View.VISIBLE);
holder.tvTonightCloseMoreInfo.setVisibility(View.GONE);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
})
.playOn(holder.tvTonightMoreInfoLay);
}我希望能帮助你我的朋友
发布于 2017-07-29 17:02:48
您可以使用RecyclerView侦听OnScrollListener的滚动事件并更改布局:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
// close info layout logic...
}
}https://stackoverflow.com/questions/45391820
复制相似问题