Wie man Kontext, in getView des Adapters für das listview-Steuerelement
Ich habe drei Fragen:
-
Ich bin mit getApplicationContext im Gegensatz zu allen Beispielen, die ich gesehen habe, einfach sagen Rahmen. Wie bekomme ich den Zusammenhang hier? Oder ist der Anwendungskontext in Ordnung?
-
Gibt es irgendwelche Leistungseinbußen für mich überschreiben der getView statt ihn handle es sich (ich bin das nur tut, um eine benutzerdefinierte schriftart)
-
Gibt es irgendetwas, was ich beachten sollte bei der Verwendung dieses Ansatzes (wie bin ich nur kopieren und einfügen, ohne zu verstehen, was es tun wird, wenn ich mit 250 Sachen in meiner Liste). Alle mögliche Lecks, ich kann Ursache?
Mein Code:
private Typeface arabicFont;
arabicFont = Typeface.createFromAsset(getAssets(), "arabicfont.ttf");
...
_arabicAdapter = new SimpleCursorAdapter(this,
R.layout.book_list_item_arabic,
_cursor,
new String[] {"NumberArabic", "Arabic"},
new int[] {R.id.txtNumber, R.id.txtBookName},
CursorAdapter.NO_SELECTION)
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.book_list_item_arabic, parent, false);
}
TextView txtBookName = (TextView)convertView.findViewById(R.id.txtBookName);
txtBookName.setTypeface(arabicFont);
txtBookName.setText("\"العربية\"");
return convertView;
};
};
InformationsquelleAutor sprocket12 | 2013-11-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
ViweGroup Elternteil ist sicherlich nicht null,also, Eltern.getContext() vielleicht der beste Weg, für Holen Kontext
Übergeben Sie
this
Ihren Konstruktor hierwäre Ihre
Context
so sollten Sie eine variable in IhremAdapter
vom TypContext
die Sie zuweisen, in den Konstruktor.Nicht, dass ich bewusst bin, aber wenn es nur eine schriftart dann könnten Sie weisen diese in einem
style
für dieTextView
, die Sie für IhreListView
Elemente.Ja, Sie sollten sich bewusst sein, dass copy/paste code ohne zu verstehen, es wird immer ärger. Gehen Sie durch eine Zeile und stellen Sie sicher, dass Sie verstehen, was ist alles zu tun.
Context c;
dann weisen Sie es dem Kontext, die Sie übergeben im Konstruktor dann tun,c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
?