Android 如何在Recyclerview适配器中设置链接越来越少的textview

Android 如何在Recyclerview适配器中设置链接越来越少的textview,android,textview,android-recyclerview,Android,Textview,Android Recyclerview,我有一个文本视图,用于显示链接越来越少的大文本。我的RecyclerView适配器中有这个TextView。当我启动应用程序时,它会显示正确的文本,但当我向下滚动并再次向上滚动时,有时文本消失,有时文本交换,有时不再显示 我正在使用以下代码: CreateView持有者代码: public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { return new ListI

我有一个
文本视图
,用于显示链接越来越少的大文本。我的
RecyclerView
适配器中有这个
TextView
。当我启动应用程序时,它会显示正确的文本,但当我向下滚动并再次向上滚动时,有时文本消失,有时文本交换,有时不再显示

我正在使用以下代码:

CreateView持有者代码:

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
        return new ListItemHolder(inflater.inflate(mLayoutResID, viewGroup, false));
}


@Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {

    mList = (dataList) this.dataList.get(position);
final ListItemHolder listItemHolder = (ListItemHolder) viewHolder;

listItemHolder.mBodyText = mList.getmBody();
makeExpandable(listItemHolder.mBodyText, listItemHolder.mBodyTextView);
}


你能发布适配器代码吗?特别是在CreateViewHolder和OnBindViewHolder上。我在问题描述中编辑了我的代码,请检查一下,如果你有任何想法,请帮助我。你的列表是什么?像ArrayList或要在适配器项目中设置的东西?我没有ArrayList,它是自定义列表,我在其中设置了列表项目的详细信息。我可以为这个问题提供任何解决方案吗。这将是一个很大的帮助。
public void makeExpandable(String descriptionText, final TextView textView) {

    MORE = mContext.getResources().getString(R.string.more_content);
    LESS = " " + mContext.getResources().getString(R.string.less_content);
    CharSequence body = Html.fromHtml(descriptionText);
    final SpannableString text = new SpannableString(body);
    mTitleBodyTextView = textView;

    final int maxChar = 150;
    final ViewTreeObserver vto = textView.getViewTreeObserver();
    textView.setTextColor(mContext.getResources().getColor(R.color.black));

    vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            ViewTreeObserver obs = textView.getViewTreeObserver();
            obs.removeOnGlobalLayoutListener(this);
            lineEndIndex = 150;
            textView.setMovementMethod(LinkMovementMethod.getInstance());
            showLess(text, maxChar, textView);
        }
    });

}


/**
 * truncate text and append a clickable {@link #MORE}
 */
private void showLess(final SpannableString text, final int maxChar, final TextView textView) {

    final String newText = text.subSequence(0, lineEndIndex - (ELLIPSIZE.length() +
            MORE.length() + 1)).toString() + ELLIPSIZE + MORE;
    SpannableStringBuilder builder = new SpannableStringBuilder(newText);

    builder.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            showMore(text, maxChar, textView);
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
            ds.setColor(mContext.getResources().getColor(R.color.grey_dark));
        }
    }, newText.length() - MORE.length(), newText.length(), 0);

    textView.setText(builder, TextView.BufferType.SPANNABLE);
}

/**
 * show full text and append a clickable {@link #LESS}
 */
private void showMore(final SpannableString text, final int maxChar, final TextView textView) {
    // create a text like subText + ELLIPSIZE + MORE
    SpannableStringBuilder builder = new SpannableStringBuilder(text + LESS);

    builder.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            showLess(text, maxChar, textView);
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
            ds.setColor(mContext.getResources().getColor(R.color.grey_dark));
        }
    }, builder.length() - LESS.length(), builder.length(), 0);

    textView.setText(builder, TextView.BufferType.SPANNABLE);

}