簡體   English   中英

GridView並不包含所有適配器

[英]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

這對我來說是個問題,因為我需要使用0224 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM