2012-04-25 106 views
2

我不確定標題是否可以,但我會盡力更好地解釋它。myActivity擴展GridView實現OnClickListener

我想在我的佈局中顯示網格。爲此,我使用自定義的ArrayAdapter。 我不知道如何設置onClickListener到每個項目...

該佈局包含一個標籤,顯示一個名稱和一個gridview。

這是我的活動:

public class Sala extends Activity{ 
GridView gridView; 
TextView label_name; 

ArrayList<String> lista_opciones = new ArrayList<String>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_sala); 
    //Refresh the name in the label 
    Bundle bundle=getIntent().getExtras(); 
    String name= bundle.getString("name"); 
    label_name= (TextView) findViewById(R.id.label_name); 
    label_name.setText(name); 

    //Loading array 
    lista_op.add("Op 1"); 
    lista_op.add("Op 2"); 
    lista_op.add("Op 3"); 
    lista_op.add("Op 4"); 

    //AdaptadorOpciones 
    ArrayAdapterOpciones mAdapter = new ArrayAdapterOptions(this,lista_op); 

    //Set the customAdapter to the grid 
    gridView = (GridView) findViewById(R.id.grid); 
    gridView.setAdapter(mAdapter); 
} 

}

女巫方法我應該重寫落實onClickListener中的每個項目?

回答

4

的gridview的項目點擊impllement setOnItemClickListener:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_sala); 
    //Refresh the name in the label 
    Bundle bundle=getIntent().getExtras(); 
    String name= bundle.getString("name"); 
    label_name= (TextView) findViewById(R.id.label_name); 
    label_name.setText(name); 

    //Loading array 
    lista_op.add("Op 1"); 
    lista_op.add("Op 2"); 
    lista_op.add("Op 3"); 
    lista_op.add("Op 4"); 

    //AdaptadorOpciones 
    ArrayAdapterOpciones mAdapter = new ArrayAdapterOptions(this,lista_op); 

    //Set the customAdapter to the grid 
    gridView = (GridView) findViewById(R.id.grid); 
    gridView.setAdapter(mAdapter); 
    gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

       //Do stuff here 
      } 
     }); 
} 
+0

我已經試過了,它編譯但從來沒有跑入inItemClick方法。 – dnaranjo 2012-04-25 01:57:59

+0

如果控件沒有進入項目點擊偵聽器,那麼可能是在佈局中設置了trueable。從您的佈局中刪除所有視圖中的可點擊,然後嘗試。 – 2012-04-25 04:28:00

+0

我已經檢查過,但沒有任何可點擊的屬性在我的layout_adapter中都設置爲true在layout_sala(主要) – dnaranjo 2012-04-25 09:53:56

0

你可以在你的Adapter.getView實現添加監聽器:

@Override  
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView button = (ImageView) convertView; 
     if (button == null) { 
      button = new ImageButton(); // or whatever 
      button.setOnClickListener(this); 
     } 
     button.setId(ids_present.get(position)); 
     return button; 
    }