2013-10-02 57 views
1

我有一个listview(其项目中有一个textview)和一个按钮在我的活动中。我正在使用加载器机制将数据加载到listview中。我点击按钮开始应用程序的设置活动。用户可以在设置屏幕中更改字体类型和大小。我从首选项中获取更改的字体值,并将其设置为我的自定义适配器类的bindView()方法内的textviews。但是,只有当我再次启动活动时,才能在列表视图中看到更改后的字体。只要用户从设置屏幕上点击返回按钮,如何将更改的字体大小和类型应用于列表视图项目?我如何刷新我的列表视图才能更改字体?请指导我。如何在android中更改已填充的listview项的字体

我尝试了下面的刷新列表视图,但它没有用,因为它仅在适配器数据集更改时才通知。

@Override 
public void onResume() { 
    super.onResume(); 
    adapter.notifyDataSetChanged(); 
} 

回答

3

呼叫改变字体后,此方法。在这个参数中,“v”是你的listview或listview parentand“f”是你在方法中的字体。

/** 
* To apply custom font for whole activity 
*/ 
public static void applyFontForWholeActivity(final View v) { 
    // Typeface fontToSet = Typeface.createFromAsset(v.getContext() 
    // .getAssets(), "fonts/EUROSTILE_BOLD.TTF"); 

    try { 
     if (v instanceof ViewGroup) { 
      ViewGroup vg = (ViewGroup) v; 
      for (int i = 0; i < vg.getChildCount(); i++) { 
       View child = vg.getChildAt(i); 
       applyFontForWholeActivity(child); 
      } 
     } else if (v instanceof TextView) { 
      TextView tv = (TextView) v; 
      tv.setTypeface(ActivityUtils.fontToSetGlobal); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     // ignore 
    } 
} 
+0

这真的很好。非常感谢。 – user1670443

0

重新设置您的adapater:

@Override 
    public void onResume() { 
     super.onResume(); 
     listview.setAdapter(adapter); 
     adapter.notifyDataSetChanged(); 
    } 
+0

我试着重置适配器,但无法获得预期的结果。 – user1670443

相关问题