2012-11-03 57 views
0

嘗試從我創建並填充的gridView中獲取特定位置項目後面的數據。 下面的監聽器方法setOnItemClickListener()效果很好,但我需要的是獲取屏幕上的信息(gridview)不僅在物品點擊。Android GridView未在活動中創建填充

這是一個從我的活動剪斷:

ImageAdapter adapter = new ImageAdapter(LaunchActivity.this, 
       myArray, elements); 
     gridview.setAdapter(adapter); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, 
        int position, long id) { 

       ImageView iv = (ImageView) v.findViewById(R.id.icon_image); 
       iv.setImageDrawable(getResources() 
         .getDrawable(R.drawable.drank)); 
       String name = elements[position].toString(); 
       System.out.println("===POSITION: " + position); 
       if (dbHelper.getElementByPosition(position) == null) { 
        System.out.println("can insert"); 
        dbHelper.addElement(new Beer(name, 1, position)); 
       } else { 
        System.out.println("already exists"); 
       } 
      } 
     }); 

     if (!elements.isEmpty()) { 
      for (Element cn : elements) { 
      Element item = (Element) gridview.getItemAtPosition(cn.getPosition()); 



       System.out.println(cn.getPosition() + ", ITEM: " + item); 


} 
     } 

它不斷返回null ...:

[2012-11-04 01:33:46 - Emulator] I/System.out(1771): 7, ITEM: null 
[2012-11-04 01:33:46 - Emulator] I/System.out(1771): 3, ITEM: null 
[2012-11-04 01:33:46 - Emulator] I/System.out(1771): 11, ITEM: null 
[2012-11-04 01:33:47 - Emulator] I/System.out(1771): 14, ITEM: null 
[2012-11-04 01:33:47 - Emulator] I/System.out(1771): 12, ITEM: null 

我不明白爲什麼我得到這個錯誤... 也許有人可以發現我的錯誤,或者只是一個想法會很好。 謝謝!

回答

0

onCreate期間,網格尚未由適配器填滿。你有幾種可能性。其中之一是使用延遲可運行在在onStart例如

new Handler().runDelayed(Runnable, long). 

而且這裏面運行的,網格將被填充。

或者更好的辦法是,在適配器上註冊一個datasetobserver,並且知道網格何時填滿。