gpt4 book ai didi

java - 在 Recycler View 项目中应用字体后滚动滞后

转载 作者:可可西里 更新时间:2023-11-01 11:42:38 25 4
gpt4 key购买 nike

我是 android 中的 Recycler view 的新手,我正在研究文本的样式,所以我已经像下面那样做了我的适配器类。

 public class MyAdapter extends RecyclerView.Adapter {    private String[] mDataset;    private ArrayList mContactData = new ArrayList();    Context context;    // Provide a reference to the views for each data item    // Complex data items may need more than one view per item, and    // you provide access to all the views for a data item in a view holder    public static class ViewHolder extends RecyclerView.ViewHolder {        // each data item is just a string in this case        public TextView mPhoneNumber;        public TextView mContactName;        public TextView mCallDuration;        public TextView mCallType;        private TextView mCallTime;        public ViewHolder(View v) {            super(v);            mPhoneNumber = (TextView) v.findViewById(R.id.phone_number);            mContactName = (TextView) v.findViewById(R.id.name_text);            mCallDuration = (TextView) v.findViewById(R.id.call_duration_text);            mCallType = (TextView) v.findViewById(R.id.call_type);            mCallTime = (TextView) v.findViewById(R.id.date_time_text);        }    }    // Provide a suitable constructor (depends on the kind of dataset)    public MyAdapter(ArrayList mContactData,Context context) {        this.mContactData = mContactData;        this.context = context;    }    // Create new views (invoked by the layout manager)    @Override    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        // create a new view        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.new_layout, parent, false);        // set the view's size, margins, paddings and layout parameters        ViewHolder vh = new ViewHolder(v);        return vh;    }    // Replace the contents of a view (invoked by the layout manager)    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        // - get element from your dataset at this position        // - replace the contents of the view with that element        Typeface typeface_rMedium = Typeface.createFromAsset(context.getAssets(), "Roboto-Medium.ttf");        Typeface typeface_rLignt = Typeface.createFromAsset(context.getAssets(), "Roboto-Light.ttf");        holder.mContactName.setText(mContactData.get(position).getContactName());        holder.mPhoneNumber.setText(mContactData.get(position).getContactNumber());        holder.mPhoneNumber.setTypeface(typeface_rMedium);        holder.mCallDuration.setText(mContactData.get(position).getCallDuration()+" sec");        holder.mCallDuration.setTypeface(typeface_rLignt);        holder.mCallTime.setText(Utility.getFromatedDateTime(Long.parseLong(mContactData.get(position).getCallTime())));        holder.mCallTime.setTypeface(typeface_rLignt);        if(mContactData.get(position).getContactType().equalsIgnoreCase("STD")){            holder.mCallType.setText("S");        }else{            holder.mCallType.setText("L");        }    }    // Return the size of your dataset (invoked by the layout manager)    @Override    public int getItemCount() {        return mContactData.size();    }}

在那之后滚动变得滞后,所以任何人都猜猜出了什么问题。提前致谢。

最佳答案

尝试在 ViewHolder 构造函数中创建字体和设置字体,如下所示:

public ViewHolder(View v) {
super(v);
mPhoneNumber = (TextView) v.findViewById(R.id.phone_number);
mContactName = (TextView) v.findViewById(R.id.name_text);
mCallDuration = (TextView) v.findViewById(R.id.call_duration_text);
mCallType = (TextView) v.findViewById(R.id.call_type);
mCallTime = (TextView) v.findViewById(R.id.date_time_text);
// Add typeface lines here and remove below lines from onBindViewHolder() Method
Typeface typeface_rMedium = Typeface.createFromAsset(context.getAssets(), "Roboto-Medium.ttf");
Typeface typeface_rLignt = Typeface.createFromAsset(context.getAssets(), "Roboto-Light.ttf");
mPhoneNumber.setTypeface(typeface_rMedium);
mCallDuration.setTypeface(typeface_rLignt);
mCallTime.setTypeface(typeface_rLignt);
}

onBindViewHolder() 方法中删除您添加的那些行。由于项目 View 被重复使用,因此无需一次又一次地设置字体。

这里的问题可能是您正在创建字体并设置它的每个项目。希望这会有所帮助。

关于java - 在 Recycler View 项目中应用字体后滚动滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com