不能这样加,因为我是使用SimpleAdapter填充gridview的,button的结构是写在里面的布局文件来加进去的,我没办法获得button的id这是我的代码,看下有没有方法加侦听事件://activity里面的代码 public class ControlerActivity extends Activity { /** Called when the activity is first created. */ final int btn_selector[] = new int[]{ R.drawable.button_selector_1,R.drawable.button_selector_2,R.drawable.button_selector_3 };
final String btn_text[] = new String[]{ // R.string.first, R.string.second, R.string.third "菜单一", "菜单er", "菜单san" };
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
List<Map<String, Object>> listItems_img = new ArrayList<Map<String, Object>>();
SimpleAdapter adapter_img = new SimpleAdapter( this, listItems_img, R.layout.cell, new String[]{"image", "text"}, new int[]{R.id.image_btn, R.id.text_btn} );
public class ControlerActivity extends Activity {
/** Called when the activity is first created. */ final int btn_selector[] = new int[]{
R.drawable.button_selector_1,R.drawable.button_selector_2,R.drawable.button_selector_3
};
final String btn_text[] = new String[]{
// R.string.first, R.string.second, R.string.third
"菜单一", "菜单er", "菜单san"
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
List<Map<String, Object>> listItems_img = new ArrayList<Map<String, Object>>();
/**
* 给按钮添加图片
*/
for( int i=0; i<3; i++ ){
Map<String, Object> listItem = new HashMap<String, Object>();
listItem.put("image", btn_selector[i]);
listItem.put("text", btn_text[i]);
listItems_img.add(listItem);
}
SimpleAdapter adapter_img = new SimpleAdapter(
this,
listItems_img,
R.layout.cell,
new String[]{"image", "text"},
new int[]{R.id.image_btn, R.id.text_btn}
);
GridView grid = (GridView)findViewById(R.id.main_menu);
grid.setAdapter(adapter_img);
}
}//R.layout.cell的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center" >
<ImageButton
android:id = "@+id/image_btn"
android:layout_width="50dp"
android:layout_height="50dp"
></ImageButton>
<TextView
android:id = "@+id/text_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
switch(position){//position是你选中的button的位置(第几个)
case 0:
....
}
}
});
如果想丰富每一个girdview子项,重写Adapter,在getview里设置相关的监听
android:clickable="false"