当ListView的item点击展开其下半部分,但ListView高度无变化,导致最后的item被挤出屏幕

为了实现点击item中某个TextView,展示此item隐藏的布局,再点击,隐藏这个展开的布局这个功能,我在adapter的getVIew()里给TextView加了一个点击事件。

 textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ruleView.getVisibility() == View.VISIBLE) {
                   ruleView.setVisibility(View.GONE);
                } else {
                   ruleView.setVisibility(View.VISIBLE);
            }
        });

看起来蛮正常的显示:

Paste_Image.png

当我点击“使用规则”的时候会展开item的下半部分:

Paste_Image.png

就出现了,最下边的item有部分被挤出屏幕的情况。


当时,第一个想到的解决办法是,在点击事件,让ListView重绘高度。这个方法虽然可行,但感觉杀鸡用牛刀了。
  那么我就想到了第二种方法,众所周知ListView有个notifyDataSetChanged()方法。这个方法是数据改变时调用则会刷新整个ListView。怎么能让我点击时改变数据呢?我想到了在“对象”里增加变量,用一个boolean类型判断是展示还是隐藏。

举个例子:
我有一个xxxEntity类,我在其中增加了变量isShowRule

public class xxxEntity {
    private String xxx;
    private String xxx;
    private String xxx;
    private String xxx;
    private String xxx;
    private String xxx;
    /*是否显示规则布局  属于ui程序使用的变量  和业务无关*/
    private boolean isShowRule;
}

当我在点击“使用规则”的时候,在点击事件里就给isShowRule赋值。然后调用notifyDataSetChanged()。并在getVIew()里通过判断isShowRule的值来改变ui的展示或者隐藏。相比之下,比起重绘ListVIew的高度还是比较简单也易于理解好多啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容