2017-05-14 32 views
0

我正在寫作業的小遊戲應用程序,如「內存」遊戲。我想使用GridView並將ImageButton放入它中以顯示一個圖像9次,並設置onClickListener以在每個圖像下顯示隨機數。我在佈局中設置gridview,使用id來訪問它,設置適配器來填充它,但它不起作用,並且我沒有錯誤。此外,我試圖找出我的代碼中有什麼問題,但失敗了。使用適配器填充GridView與ImageButtons不起作用

問題是當我啓動應用程序時,它是空白的,沒有在emlutaor屏幕上。

幫助。 這裏是我適配器類:

public class ImageButtonAdapter extends BaseAdapter { 

ImageButton[] buttons; 
public Context c; 
public ImageButtonAdapter(Context c) { 
    this.c = c; 
    buttons = new ImageButton[9]; 
    for (int i=0;i<buttons.length;i++) { 
     buttons[i] = new ImageButton(c); 
     buttons[i].setImageResource(R.mipmap.gmicon); 
     buttons[i].setLayoutParams(new GridView.LayoutParams(300,300)); 
     buttons[i].setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Button btn = (Button)v; 
       btn.setText("5"); 
      } 
     }); 
    } 
} 


@Override 
public int getCount() { 
    return 0; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    return null; 
} 
} 

這裏是gameActivity:

public class GameActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.game_layout); 
    GridView gv = (GridView)findViewById(R.id.grid); 
    ImageButtonAdapter adapter = new ImageButtonAdapter(this); 
    gv.setAdapter(adapter); 
} 
} 

誰能幫告訴我是什麼問題?謝謝。

回答

0

我們必須orverride getView()方法對於每個項目在GridView控件或ListView顯示。

請參閱本 - https://developer.android.com/reference/android/widget/Adapter.html

public class ImageButtonAdapter extends BaseAdapter { 

    ImageButton[] buttons; 
    public Context c; 
    public ImageButtonAdapter(Context c) { 
     this.c = c; 
     buttons = new ImageButton[9]; 
    } 


@Override 
public int getCount() { 
    return buttons.length; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    convertView = new ImageButton(c); 
    buttons[position] = convertView; 
    buttons[position].setImageResource(R.mipmap.gmicon); 
    buttons[position].setLayoutParams(new GridView.LayoutParams(300,300)); 
    buttons[position].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Button btn = (Button)v; 
      btn.setText(position + ""); 
     } 
    }); 
    return convertView; 
} 

}

0

讓你getCount將返回buttons.length

@Override public int getCount() 
    { 
    return buttons.length; 
    } 
+0

現在,我得到錯誤: 致命異常:主要 過程:com.androidassignment,PID:10879 顯示java.lang.NullPointerException:試圖調用對null對象引用的虛擬方法'int android.view.View.getImportantForAccessibility()' – Mystiq