ExpandableTextView icon indicating copy to clipboard operation
ExpandableTextView copied to clipboard

为什么这个action(StatusType type)不能切换成对应的状态,而是一个开关作用?

Open Zeng-Ke opened this issue 4 years ago • 2 comments

private void action(StatusType type) {
        boolean isHide = currentLines < mLineCount;
        if (type != null) {
            mNeedAnimation = false;
        }
        if (mNeedAnimation) {
            ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);
            final boolean finalIsHide = isHide;
            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    Float value = (Float) animation.getAnimatedValue();
                    if (finalIsHide) {
                        currentLines = mLimitLines + (int) ((mLineCount - mLimitLines) * value);
                    } else {
                        if (mNeedContract)
                            currentLines = mLimitLines + (int) ((mLineCount - mLimitLines) * (1 - value));
                    }
                    setText(setRealContent(mContent));
                }
            });
            valueAnimator.setDuration(100);
            valueAnimator.start();
        } else {
            if (isHide) {
                currentLines = mLimitLines + ((mLineCount - mLimitLines));
            } else {
                if (mNeedContract)
                    currentLines = mLimitLines;
            }
            setText(setRealContent(mContent));
        }
    }

整个方法都没有用到type的值,只是拿去做判空操作,然后做一个开关切换。并不能切换到指定的状态。 现在我这边有一个场景是这样的,列表item中内容用到ExpandableTextview,在展开的情况下调用notifyDataItemSetChange()方法时,它自动折叠了。所以我用一个布尔值每个item的状态,在setContent后面再调用setCurrStatus。但是,就导致初始化列表数据时不是默认折叠了。

Zeng-Ke avatar Oct 29 '20 08:10 Zeng-Ke

请问你解决了吗?我想用这个方法设置点击内容收起展开,但压根设置了没用

GuangNian10000 avatar Jun 04 '21 01:06 GuangNian10000

/** * 设置当前的状态 * * @param type */ public void setCurrStatus(StatusType type) { action(type); } ExpandableTextView中有一个方法可以展开或收起 前提是你没有设置bind 也就是列表中保存展开或收起状态 /** * 绑定状态 * * @param model */ public void bind(ExpandableStatusFix model) { mModel = model; } 解决方法 在自己代码需要展开或者收起的地方设置状态(ps:状态是反的) 如果想打开: model.setStatus(StatusType.STATUS_CONTRACT); expandableTextView.setCurrStatus(entity.getStatus()); 如果想收起: model.setStatus(StatusType.STATUS_EXPAND); expandableTextView.setCurrStatus(entity.getStatus());

xh2015 avatar Oct 21 '22 03:10 xh2015