كيفية الحصول على السياق في getView للمحول لعرض القائمة
-
21-12-2019 - |
سؤال
لدي ثلاثة أسئلة:
أنا أستخدم getApplicationContext على عكس جميع الأمثلة التي رأيتها والتي تشير فقط إلى السياق.كيف يمكنني الحصول على السياق هنا؟أم أن سياق التطبيق جيد؟
هل هناك أي عقوبة أداء بالنسبة لي لتجاوز getView بدلاً من السماح له بالتعامل معه بنفسه (أنا أفعل ذلك فقط لتعيين خط مخصص)
هل هناك أي شيء يجب أن أكون على دراية به أثناء استخدام هذا الأسلوب (حيث إنني أقوم فقط بالنسخ واللصق دون فهم ما سيفعله إذا كان لدي 250 عنصرًا في قائمتي).هل هناك أي تسريبات محتملة يمكن أن أسببها؟
رمز بلدي:
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;
};
};
المحلول
fiwegroup الوالد هو بالتأكيد ليست فارغة، لذلك، penter.getcontext () ربما أفضل طريقة لجلب السياق
نصائح أخرى
أنا أستخدم getApplicationContext على عكس جميع الأمثلة التي رأيتها والتي تشير فقط إلى السياق.كيف يمكنني الحصول على السياق هنا؟أم أن سياق التطبيق جيد؟
أنت تمر this
إلى المنشئ الخاص بك هنا
_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)
الذي سيكون الخاص بك Context
لذلك يجب أن يكون لديك متغير في الخاص بك Adapter
هذا من النوع Context
الذي قمت بتعيينه في المنشئ الخاص بك.
هل هناك أي عقوبة أداء بالنسبة لي لتجاوز getView بدلاً من السماح له بالتعامل معه بنفسه (أنا أفعل ذلك فقط لتعيين خط مخصص)
ليس هذا ما أعلمه ولكن إذا كان مجرد خط، فيمكنك تعيينه في ملف style
ل TextView
التي تستخدمها لجهودكم ListView
أغراض.
هل هناك أي شيء يجب أن أكون على دراية به أثناء استخدام هذا الأسلوب (حيث إنني أقوم فقط بالنسخ واللصق دون فهم ما سيفعله إذا كان لدي 250 عنصرًا في قائمتي).هل هناك أي تسريبات محتملة يمكن أن أسببها؟
نعم، يجب أن تدرك أن نسخ/لصق الكود دون فهمه يمثل مشكلة دائمًا.قم بالمراجعة سطراً تلو الآخر وتأكد من أنك تفهم ما يفعله كل شيء.