在我的应用程序中,我应该显示来自服务器的一些数据,对于这个项目,我创建了选项按钮,当点击此选项按钮时,显示该用户的其他数据。
请参阅下图,了解我的意思:
点击“...”更改布局并显示其他数据,点击“✕”关闭此布局并再次显示第一个布局。
点击 ... 时我可以显示其他布局,点击✕后我可以关闭此布局。
但是,我想在滚动set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(my_app Threads::Threads)
关闭此布局(信息布局)并显示基本布局(带图片)时,我想在滚动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
在活动中初始化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);
}
});
我该怎么办?请帮帮我我的朋友< 3
答案 0 :(得分:2)
为此你应该使用一个标志,如布尔值 为此,您应该在滚动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);
}
我希望能帮助你的朋友
答案 1 :(得分:1)
您可以使用RecyclerView
收听OnScrollListener
的滚动事件并更改布局:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
// close info layout logic...
}
}