Java 如何更改不在屏幕上的视图的背景?

Java 如何更改不在屏幕上的视图的背景?,java,android,gridview,imageview,Java,Android,Gridview,Imageview,我有个问题。我有一个gridView,如果你点击一个项目,gridView中其他项目的背景就会改变。但是,如果任何项目不在屏幕上,但在滚动条中,应用程序会崩溃并出现NullPointerException错误,我假设这是因为项目的imageview不在屏幕上 这是gridview和imageadapter <GridView android:id="@+id/gridView1" android:layout_width="400dp"

我有个问题。我有一个gridView,如果你点击一个项目,gridView中其他项目的背景就会改变。但是,如果任何项目不在屏幕上,但在滚动条中,应用程序会崩溃并出现NullPointerException错误,我假设这是因为项目的imageview不在屏幕上

这是gridview和imageadapter

<GridView
            android:id="@+id/gridView1"
            android:layout_width="400dp"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:background="@drawable/redback"
            android:columnWidth="50dp"
            android:gravity="center"
            android:layout_above="@+id/bbClear"
            android:numColumns="auto_fit"
            android:padding="15dp"
            android:stretchMode="none" >
        </GridView>
实际误差来自于线路

 v = parent.getChildAt(i);
在onClick方法中,i是位置

我可以对以下任一项做些什么:

避免在较小的屏幕上显示滚动条


或者允许更改非屏幕视图的背景。

导致NullPointerException的行在哪里?我认为它发生在
onListItemClicked
中,但您尚未显示该方法。并非所有视图都存在于栅格视图中。只有那些至少部分显示在屏幕上的才存在。当它们离开屏幕时,它们被添加到要转换的视图堆栈中。您没有在
getView
中使用
convertView
,这是低效的。你应该考虑重用CurrdVIEW。你可以做的另一件事是不要使用<代码> GETMelpgs/Cuth>方法。对于固定的dp值,这是完全不必要的。相反,在dimens.xml文件中放入一个名为
image\u view\u padding
的条目,其值为
3dp
。然后使用
mContext.getResources().getDimensionPixelSize(R.dimen.image\u view\u padding)
,它将返回像素数的
int
,而无需进行任何转换;我的位置在哪里。如何使用convertView?
 v = parent.getChildAt(i);