سؤال

لدي ثلاثة أسئلة:

  1. أنا أستخدم getApplicationContext على عكس جميع الأمثلة التي رأيتها والتي تشير فقط إلى السياق.كيف يمكنني الحصول على السياق هنا؟أم أن سياق التطبيق جيد؟

  2. هل هناك أي عقوبة أداء بالنسبة لي لتجاوز getView بدلاً من السماح له بالتعامل معه بنفسه (أنا أفعل ذلك فقط لتعيين خط مخصص)

  3. هل هناك أي شيء يجب أن أكون على دراية به أثناء استخدام هذا الأسلوب (حيث إنني أقوم فقط بالنسخ واللصق دون فهم ما سيفعله إذا كان لدي 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;
    };
};
هل كانت مفيدة؟

المحلول

giveacodicetagpre.

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 عنصرًا في قائمتي).هل هناك أي تسريبات محتملة يمكن أن أسببها؟

نعم، يجب أن تدرك أن نسخ/لصق الكود دون فهمه يمثل مشكلة دائمًا.قم بالمراجعة سطراً تلو الآخر وتأكد من أنك تفهم ما يفعله كل شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top