【问题标题】:How to show/hide listview elements?如何显示/隐藏列表视图元素?
【发布时间】:2016-02-14 13:35:18
【问题描述】:

我正在创建一个聊天应用程序。我想显示用户点击消息的时间

。此功能在 BaseAdapter 的 getView() 中使用此代码

holder.txt_msg_user.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {

if (holder.txt_date_user.isShown() && holder.txt_AM_user.isShown())
                    {
                        holder.usertimelayout.setVisibility(View.GONE);
                        holder.txt_date_user.setVisibility(View.GONE);
                        holder.txt_AM_user.setVisibility(View.GONE);
                    }
                    else
                    {
                        holder.usertimelayout.setVisibility(View.VISIBLE);
                        holder.txt_date_user.setVisibility(View.VISIBLE);
                        holder.txt_AM_user.setVisibility(View.VISIBLE);
                    }

                }
            });

但是我想再添加一个功能,如下图所示,如果我点击每条消息,每条消息都显示它的时间,但我想实现像 Skype 这样的功能,如果用户看到任何消息的时间,那么首先它将检查以前的消息。如果任何先前的消息显示时间,那么它应该被隐藏并应该显示用户最近点击的消息。请帮助它如何成为可能。这就是问题所在:(见图)

【问题讨论】:

  • 您可以在类中的变量中跟踪所选消息。当用户点击另一个时,它会隐藏在选定对象上,显示当前对象,并显示当前选定对象。

标签: android listview android-studio


【解决方案1】:

由于您已经达到了时间并且它被添加到每个列表项中,也许您可​​以将列表视图中的最后一项设置为 View.VISIBLE,其余的设置为 View.GONE。

【讨论】:

    【解决方案2】:

    您保留如下属性:

    View selectedMessage;
    

    您在用户点击某些消息时设置的位置,并验证它:

    ...
    @Override
    public void onClick(View v) {
        if (selectedMessage != null && v != selectedMessage) {
             Holder h = (Holder) selectedMessage.getTag();
             h.hideTime();
    
             h = (Holder) v.getTag();
             h.showTime();
    
            selectedMessage = v;
        }
        ...
    }
    ...
    

    值得注意的是,这个Holder 接口是您创建的,实现了showTimehideTime 方法。 这不是 Android 内置的

    【讨论】:

    • hideTime() 出现异常,我需要调用其他方法或其默认方法吗?
    • 这是一个例子,你必须实现一个这样的接口或者调用你自己的方法来隐藏和显示组件。
    • 你可以直接用代码替换showTimehideTime来显示和隐藏组件。
    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 2015-12-24
    • 2015-01-15
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多