2011-05-03 3 views
0

J'ai un ListView qui utilise SimpleAdapter, chaque ligne a 2 TextViews, et je voudrais utiliser une police externe à l'un des deux TextView .. Voici le code de la classe:Définir TextView TypeFace à partir de xml?

public class QuranEnglish extends Activity { 
<...> 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.quran_english); 

    listview=(ListView) findViewById(R.id.QuranEnglishListView);  
    <..add into list..> 
    SimpleAdapter adapter = new SimpleAdapter(
      this, 
      list, 
      R.layout.quran_english_row, 
      new String[] {"Arabic","English"}, 
      new int[] {R.id.QuranEnglishTextViewArabic,R.id.QuranEnglishTextViewEnglish}); 

    listview.setAdapter(adapter); 

xml pour chaque rangée (quran_english_row.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <LinearLayout android:gravity="right" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="fill_parent"> 
     <TextView android:textSize="21px" android:text="TextView" android:id="@+id/QuranEnglishTextViewArabic" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    </LinearLayout> 

    <TextView android:textSize="21px" android:text="TextView" android:id="@+id/QuranEnglishTextViewEnglish" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 

</LinearLayout> 

xml pour la mise en page (quran_english.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <ListView android:id="@+id/QuranEnglishListView" android:layout_width="fill_parent" android:layout_height="fill_parent"></ListView> 

</LinearLayout> 

Alors, comment puis-je mettre le caractère externe de t TextView qui est dans la ligne (quran_english_row.xml)? J'ai essayé d'utiliser cette ligne si elle est écrasé ma demande:

((TextView) findViewById(R.id.QuranEnglishTextViewArabic)).setTypeface(Typeface.createFromAsset(getAssets(),"dejavusans.ttf")); 
+0

Quelle erreur obtenez-vous? NullPointerException? –

+0

@Vladimir Ivanov oui, NullPointerException – Omar

Répondre

0
R.id.QuranEnglishTextViewArabic 

n'est pas une carte d'identité d'un de vos vues ici. C'est un identifiant d'un exemple de vue, qui est utilisé pour remplir la liste. Afin de changer la police, vous devez obtenir une vue de votre liste. Cela fonctionne si vous avez choisi un de vos points de vue:

TextView view = getSelectedView(); 
if (view != null) { 
    view.setTypeface(Typeface.createFromAsset(getAssets(),"dejavusans.ttf")); 
} 
+0

getSelectedView() obtiendra la vue qui est sélectionnée .. Je veux changer la police de tous les TextViews, même ceux qui ne sont pas choisis .. comment puis-je faire cela? – Omar

+0

utilisez la méthode getView() de votre SimpleAdapter. En savoir plus ici: http://developer.android.com/reference/android/widget/Adapter.html#getView(int,%20android.view.View,%20android.view.ViewGroup) –

Questions connexes