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