[英]GridView doesn't contain all of adapter
我制作了一個GridView mGridView
和一個225個Views的適配器mAdapter
,並將適配器設置為GridView。 我還做了一個按鈕,所以當我單擊它時會這樣做:
Log.d("mAdapter.getCount()","" + mAdapter.getCount());
Log.d("mGridView.getCount()",""+mGridView.getCount());
Log.d("mGridView.getChildCount()",""+mGridView.getChildCount());
結果是:
D/mAdapter.getCount()﹕ 225
D/mGridView.getCount()﹕ 225
D/mGridView.getChildCount()﹕ 180
這對我來說是個問題,因為我需要使用0
到224
mGridView.getChildAt(int position)
。 每當我使用mGridView.getChildAt(180).setBackgroundColor(Color.BLUE)
,都會出現此錯誤:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundColor(int)' on a null object reference
就是說孩子是null
。 但是我不知道如何解決此問題,因此我可以訪問GridView中的每個孩子。
mGridView.getChildCount()將返回一次在窗口中可見的視圖數。 假設如果我的GridView有5列並且一次只能顯示10列,則mGridView.getChildCount()將返回50(= 5x10)
如果您嘗試使用getChildCount API修改某個索引處視圖的屬性(例如backgroundColor),則可能使用idxFirstVisiblePosition = mGridView.getFirstVisiblePosition()檢查第一個可見位置(例如25),然后檢查(idxFirstVisiblePosition + childCount- 1)將為您提供最大的子索引,您可以訪問並更改當前可見窗口的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.