如何获取listview的适配器getView中的上下文

我有三个问题:

  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; }; }; 

Solutions Collecting From Web of "如何获取listview的适配器getView中的上下文"

 public View getView(int position, View convertView, ViewGroup parent) 

ViweGroup父类肯定不是null,所以,parent.getContext()可能是获取上下文的最佳方式

我正在使用getApplicationContext,而不像我刚才所说的只是说上下文的所有例子。 我如何在这里获得上下文? 或者是应用程序上下文很好?

你在这里传递给你的构造函数

 _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所以你应该有一个variables在你的Adapter的typesContext ,你在你的构造函数分配。

是否有任何性能损失,我重写getView而不是让它自己处理它(我只是做它来设置自定义字体)

不是我意识到,但如果它只是一个字体,那么你可以分配给你的ListView项目使用的TextView style

在使用这种方法时,有什么我应该注意的(因为我只是复制和粘贴而不知道如果我的列表中有250个项目会怎么做)。 任何可能的泄漏,我可以导致?

是的,你应该知道,不理解它的复制/粘贴代码总是麻烦。 通过一行一行,确保你明白一切都在做什么。