Предварительная выборка макета текста в RecyclerView, не удается разрешить метод setTextFuture - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь добавить Prefetch Text Layout к моим reyclerview, как показано здесь и здесь .Странно, он работает только на моем кастомном TextView, а не на стандартном TextViews.Для моего стандартного TextView я получаю Cannot resolve method setTextFuture ошибку.

Также добавлю, что раньше все работало нормально.стандартный метод setText работал для пользовательских или обычных TextView.У меня есть в общей сложности четыре (4) TextViews, и все возвращают ту же ошибку.Я привел его в качестве пользовательского TextView (хотя он и не был), и ошибка исчезла.

Вот мой очищенный код.

@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder rvh, int position){
    rvh.setMtbCard(listFiltered_main.get(position));
}

public class RecyclerViewHolder extends RecyclerView.ViewHolder {
    public TextView tv_name;
    public LengthTextView tv_length;

    public RecyclerViewHolder(final View itemView, final int viewType){
        super(itemView);

        tv_name =itemView.findViewById(R.id.tv_name);
        tv_length =itemView.findViewById(R.id.tv_length);

    public void setMtbCard(final TrailsObject trailsObject) {

        //not working... getting "Cannot resolve method setTextFuture" error
        tv_name.setTextFuture(PrecomputedTextCompat.getTextFuture(
                trailsObject.getName_diff(),
                tv_name.getTextMetricsParamsCompat(),
                null)
        );

        //seemingly works fine
        tv_length.setTextFuture(PrecomputedTextCompat.getTextFuture(
                trailsObject.getLength_mi(),
                tv_length.getTextMetricsParamsCompat(),
                null)
        );
    }
}

1 Ответ

0 голосов
/ 09 декабря 2018

Используйте AppCompatTextView вместо TextView

XML

<android.support.v7.widget.AppCompatTextView
    android:id="@+id/tv_id"
    />

В адаптере

import android.support.v7.widget.AppCompatTextView;

public void onBindViewHolder(@NonNull RecyclerViewHolder rvh, int position){
    rvh.tv.setTextFuture(PrecomputedTextCompat.getTextFuture(
            string_text,
            tv.getTextMetricsParamsCompat(),
            null) //or your executor
    );
}

public class RecyclerViewHolder extends RecyclerView.ViewHolder {
    public final AppCompatTextView tv;

    public RecyclerViewHolder(final View itemView, final int viewType){
        super(itemView);

        tv =itemView.findViewById(R.id.tv_id);


         //......
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...