我用SimpleAdapter在gridview里面加button组件,但是不知道该怎样给这些button添加侦听事件。。求教

解决方案 »

  1.   

    不能这样加,因为我是使用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>>();
            
            /**
             * 给按钮添加图片
             */
            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>
      

  2.   

    在 adapter 的getview 里面 获取buttton 然后 button.setonclicklistener
      

  3.   

    那我该怎么写getview()里面的第二第三个参数呢??
      

  4.   

    继承一个SimpleAdapter,通过getView里面可以获得position,然后将button.setId(position);
      

  5.   

    如果你的gridview只是button不需要丰富设计的话,可以这样grid.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View view,
    int position, long arg3) {
    switch(position){//position是你选中的button的位置(第几个)
                                    case 0:
                                    ....
                                    }
    }
    });
    如果想丰富每一个girdview子项,重写Adapter,在getview里设置相关的监听
      

  6.   

    Button里添加android:focusable="false"
            android:clickable="false"