如何在RecyclerView中为TextView设置自定义字体?

OBX

我正在使用RecyclerView来填充来自云的数据。但是看起来,为a设置自定义字体TextView并不容易,因为它位于视图内部。传统方式,这是我尝试的方式:

TextView tx = (TextView)findViewById(R.id.person_age);

    Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/Dancing Script.ttf");

    tx.setTypeface(custom_font);

但是在这里,它使应用程序崩溃,因此,为了寻求修复,这是Main Activiy的代码:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Parse.initialize(this, "app-id", "clientkey");
    setContentView(R.layout.activity_big_board);
    initializeData();
    TextView tx = (TextView)findViewById(R.id.person_age);

    Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/Dancing Script.ttf");

    tx.setTypeface(custom_font);
    adapter = new RVAdapter(persons);


    rv=(RecyclerView)findViewById(R.id.rv);

    LinearLayoutManager llm = new LinearLayoutManager(this);
    rv.setLayoutManager(llm);
    rv.setHasFixedSize(true);


    initializeAdapter();

}

private void initializeData(){
    persons = new ArrayList<>();


    ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("BigBoard");
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> credentialList, ParseException e) {
            if (e == null) {
                for(int i=0;i<credentialList.size();i++)
                {
                    a=credentialList.get(i).getString("Location");
                    b=credentialList.get(i).getString("Feed");
                    persons.add(new Person(a,b));



                    Log.d("OUT", "So the Val::------> " +a +b);


                }
            } else {
                Log.d("score", "Error: " + e.getMessage());
            }

            adapter.notifyDataSetChanged();
        }
    });


}

private void initializeAdapter(){

    rv.setAdapter(adapter);
}

这是Adapter类的代码:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {

public static class PersonViewHolder extends RecyclerView.ViewHolder {

    CardView cv;
    TextView personName;
    TextView personAge;
    //ImageView personPhoto;

    PersonViewHolder(View itemView) {
        super(itemView);
        cv = (CardView)itemView.findViewById(R.id.cv);
        personName = (TextView)itemView.findViewById(R.id.person_name);
        personAge = (TextView)itemView.findViewById(R.id.person_age);
        //personPhoto = (ImageView)itemView.findViewById(R.id.person_photo);
    }
}

List<Person> persons;

RVAdapter(List<Person> persons){
    this.persons = persons;
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
}

@Override
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
    PersonViewHolder pvh = new PersonViewHolder(v);
    return pvh;
}

@Override
public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
    personViewHolder.personName.setText(persons.get(i).name);
    personViewHolder.personAge.setText(persons.get(i).surname);
   // personViewHolder.personPhoto.setImageResource(persons.get(i).photoId);
}

@Override
public int getItemCount()
{
    if(persons!=null)
    {
        return persons.size();
    }
    else
    {
        return 0;
    }
}

}

那么,在不导致UI线程出现任何问题的情况下执行此操作的最佳方法是什么?谢谢,

常用软件

将您的Typeface逻辑移至PersonViewHolder,可能是在其构造函数中,其原因有两个:

  1. TextView由点存在。

  2. RecyclerView可能会有多个PersonViewHolder,在这种情况下,您需要Typeface每个 设置一个PersonViewHolder,因为将有一个以上的项目和TextView需要该项目的多个项目Typeface

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在RecyclerView中为TextView设置自定义字体?

来自分类常见问题

如何在Android中为整个应用程序设置自定义字体?

来自分类常见问题

如何在NavigationView中为项目设置自定义字体?

来自分类Dev

如何在棒棒糖中为整个应用程序设置自定义字体

来自分类Dev

Android如何在画布中设置自定义字体?

来自分类Dev

Android为自定义TextView小部件设置字体

来自分类Dev

如何在自定义通知textview中设置值

来自分类Dev

如何在自定义通知textview中设置值

来自分类Dev

如何在自定义tableviewcelll中设置标签的自定义字体?

来自分类Dev

在RecyclerView适配器中设置自定义字体

来自分类Dev

如何在swift 4中将html字符串设置为标签时使用常规和粗体字体设置自定义字体?

来自分类Dev

如何在情节提要中将自定义字体设置为UILabel

来自分类Dev

如何在iOS应用程序中将自定义字体系列设置为系统字体

来自分类常见问题

如何在Exoplayer通知中设置自定义布局和字体?

来自分类Dev

如何在Android中设置自定义不同的字体样式

来自分类Dev

如何在.xml文件而不是.java文件中设置自定义字体?

来自分类Dev

如何在summernote中设置自定义字体大小列表?

来自分类Dev

如何在App.xaml中设置全局自定义字体

来自分类Dev

如何在Android中设置自定义不同的字体样式

来自分类Dev

如何在App.xaml中设置全局自定义字体

来自分类Dev

android-如何在paint对象中设置自定义字体?

来自分类Dev

如何在python igraph中为顶点标签使用自定义字体?

来自分类Dev

如何在Firefox中为svg的text元素导入自定义字体?

来自分类Dev

如何在python docx中为段落应用自定义(专有)字体?

来自分类Dev

如何在python igraph中为顶点标签使用自定义字体?

来自分类Dev

如何在Android的“自定义对话框”中设置TextView的值

来自分类Dev

我如何设置自定义字体

来自分类Dev

如何在TCPDF中添加自定义字体?

来自分类Dev

如何在CSS中安装自定义字体

Related 相关文章

  1. 1

    如何在RecyclerView中为TextView设置自定义字体?

  2. 2

    如何在Android中为整个应用程序设置自定义字体?

  3. 3

    如何在NavigationView中为项目设置自定义字体?

  4. 4

    如何在棒棒糖中为整个应用程序设置自定义字体

  5. 5

    Android如何在画布中设置自定义字体?

  6. 6

    Android为自定义TextView小部件设置字体

  7. 7

    如何在自定义通知textview中设置值

  8. 8

    如何在自定义通知textview中设置值

  9. 9

    如何在自定义tableviewcelll中设置标签的自定义字体?

  10. 10

    在RecyclerView适配器中设置自定义字体

  11. 11

    如何在swift 4中将html字符串设置为标签时使用常规和粗体字体设置自定义字体?

  12. 12

    如何在情节提要中将自定义字体设置为UILabel

  13. 13

    如何在iOS应用程序中将自定义字体系列设置为系统字体

  14. 14

    如何在Exoplayer通知中设置自定义布局和字体?

  15. 15

    如何在Android中设置自定义不同的字体样式

  16. 16

    如何在.xml文件而不是.java文件中设置自定义字体?

  17. 17

    如何在summernote中设置自定义字体大小列表?

  18. 18

    如何在App.xaml中设置全局自定义字体

  19. 19

    如何在Android中设置自定义不同的字体样式

  20. 20

    如何在App.xaml中设置全局自定义字体

  21. 21

    android-如何在paint对象中设置自定义字体?

  22. 22

    如何在python igraph中为顶点标签使用自定义字体?

  23. 23

    如何在Firefox中为svg的text元素导入自定义字体?

  24. 24

    如何在python docx中为段落应用自定义(专有)字体?

  25. 25

    如何在python igraph中为顶点标签使用自定义字体?

  26. 26

    如何在Android的“自定义对话框”中设置TextView的值

  27. 27

    我如何设置自定义字体

  28. 28

    如何在TCPDF中添加自定义字体?

  29. 29

    如何在CSS中安装自定义字体

热门标签

归档