Search code examples
androidandroid-fonts

How to set custom font for RecyclerView items


I am a beginner at android. I created a RecyclerView by parsing JSON data. I want to make this TextView font in RecyclerView items custom. I tried many methods but it didn't work for me. I want to set a custom font as my font in a text view in RecyclerView item. Please help me My adapter code:

public class ExampleAdapter extends RecyclerView.Adapter <ExampleAdapter.ExampleViewHolder>{
    private Context mContext;
    private ArrayList<ExampleItem> mExampleList;
    private onItemClickListener mListener;
    public interface onItemClickListener{
        void onItemClick(int position);
    }

    public void setOnItemClickListener(onItemClickListener listener){
        mListener = listener;
    }
    public ExampleAdapter(Context context, ArrayList<ExampleItem> examplelist){
        mContext =context;
        mExampleList = examplelist;
    }


    @NonNull
    @Override
    public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
       View v = LayoutInflater.from(mContext).inflate(R.layout.example_item,parent,false);
       return new ExampleViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
        ExampleItem currentItem = mExampleList.get(position);
        String imageUrl = currentItem.getmImageUrl();
        String creatorName = currentItem.getmCreator();
        String cat =currentItem.getmCat();

        holder.mTextViewCreator.setText(creatorName);
        holder.mTextViewCat.setText(cat);
        Glide.with(mContext)
                .load(imageUrl)
                .into(holder.mImageView);
    }

    @Override
    public int getItemCount() {
        return mExampleList.size();
    }

    public class ExampleViewHolder extends RecyclerView.ViewHolder{
public ImageView mImageView;
public TextView mTextViewCreator;
public TextView mTextViewCat;
        public ExampleViewHolder(View itemView) {
            super(itemView);
            mImageView = itemView.findViewById(R.id.image_view);
            mTextViewCreator = itemView.findViewById(R.id.text_view_creator);
            mTextViewCat = itemView.findViewById(R.id.text_view_cat);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(mListener != null){
                        int position = getAdapterPosition();
                        if (position !=RecyclerView.NO_POSITION){
                            mListener.onItemClick(position);
                        }
                    }
                }
            });
        }
    }
}

Solution

  • Put the .ttf files of your font inside res/font folder of your project, then use it in your xml layout using the fontFamily attribute, for example:

    <TextView
      android:id="@+id/yourTextView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:fontFamily="@font/your_font_name"/>
    

    Reference here: https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml