我使用下面的代码填充列表视图:
String[] values = new String[] {
"Sirwan Afifi",
"Shaho Toofani",
"Hamed Ghaderi",
"Sattar Menbari"
};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
布局:
<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="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</ListView>
</LinearLayout>
它运行正常,但结果是一个带有白色文本颜色的列表,经过调试我发现它,问题是ArrayAdapter
的第一个参数,我只需将其更改为this
然后将背景更改为黑!
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, values);
上述解决方案解决了我的问题,但我很想知道,在这种情况下this
和getApplicationContext
之间有什么区别?
我也搜索过并找到了这些答案,但这些答案还不足以澄清我的问题:
Difference between getContext() , getApplicationContext() , getBaseContext() and "this"
What's the difference between the various methods to get a Context?
答案 0 :(得分:1)
如果您创建的控件或变量应属于应用程序级别,则使用applicationContext。 如果您创建的控件或变量属于Activity级别,则使用“this”指针。 如果这不可用,我们仍然可以通过指定ActivityName.this来获取活动上下文。