android:使用getApplicationContext时ListView中的白色textColor

时间:2014-08-14 11:31:26

标签: android android-listview android-context applicationcontext

我使用下面的代码填充列表视图:

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

上述解决方案解决了我的问题,但我很想知道,在这种情况下thisgetApplicationContext之间有什么区别?

我也搜索过并找到了这些答案,但这些答案还不足以澄清我的问题:

Difference between getContext() , getApplicationContext() , getBaseContext() and "this"
What's the difference between the various methods to get a Context?

1 个答案:

答案 0 :(得分:1)

如果您创建的控件或变量应属于应用程序级别,则使用applicationContext。 如果您创建的控件或变量属于Activity级别,则使用“this”指针。 如果这不可用,我们仍然可以通过指定ActivityName.this来获取活动上下文。