android - 最初隐藏的视图布局,然后 onclick 将使视图可见,反之亦然(Android)
问题描述
我有一个最初设置为 GONE 的约束布局可见性expandableLayout.setVisibility(View.GONE);
。我想让视图在发出“setOnClickListener”时可见。然后,当用户再次单击布局时,视图将设置为 Gone Again。
public class ViewHolder extends RecyclerView.ViewHolder {
TextView mThicc;
ListView listView;
ConstraintLayout expandableLayout;
public ViewHolder(@NonNull View itemView) {
super(itemView);
mThicc = itemView.findViewById(R.id.thicc);
listView = itemView.findViewById(R.id.stocklist);
expandableLayout = itemView.findViewById(R.id.expandableLayout);
expandableLayout.setVisibility(View.GONE);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
expandableLayout.setVisibility(View.GONE);
}
});
}
}
问题是,当我点击布局时,它不会保持隐藏状态。
解决方案
试试这个:
public class ViewHolder extends RecyclerView.ViewHolder {
TextView mThicc;
ListView listView;
ConstraintLayout expandableLayout;
public ViewHolder(@NonNull View itemView) {
super(itemView);
mThicc = itemView.findViewById(R.id.thicc);
listView = itemView.findViewById(R.id.stocklist);
expandableLayout = itemView.findViewById(R.id.expandableLayout);
expandableLayout.setVisibility(View.GONE);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int visibility = expandableLayout.getVisibility() == View.GONE ? View.VISIBLE : View.GONE;
expandableLayout.setVisibility(visibility);
}
});
}
}
但我不推荐这种方法,因为visibility
如果 ViewHolder 被回收,它会失去它的状态。您需要保持列表项的可见性。
推荐阅读
- javascript - Karma 测试成功,但 PhantomJS 返回 "An error was throw in afterAll" SyntaxError: Unexpected token ','
- angular - 永远不要改变另一个组件的值
- mysql - 如果我定义一个卷,Docker-compose 将不会启动 MySQL
- excel - 找到具有特定值的单元格,如何引用该单元格以在整个列中搜索另一个值
- amazon-web-services - 为什么我不能在 AWS Batch C++ SDK 中覆盖多节点并行作业的容器变量?
- excel - Excel 显示不正确的多项式趋势线函数
- angular - 获取类的属性类型
- postgresql - 如何修复 \copy 中“TO”处的语法错误?
- java - 找不到在其他 java 文件中声明的方法
- batch-file - BAT 多个 For 循环以进一步过滤结果