2013-10-02 82 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

相關問題