2012-04-25 103 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; 
    }