SaluteWarmTinct 2015-06-13 06:37 采纳率: 100%
浏览 4579
已采纳

Android获取GridView里的item内容时获取的内容不是点击的。

图片说明
如图,快餐,烧烤这些白色btn是gridview里的item。这个页面生成了多个gridview,我想在点击其中一个btn时候获取btn的text作为参数传递。使用

 gridView=new MyGridView(FenleiActivity.this);
        gridView.setVerticalSpacing(10);
        gridView.setHorizontalSpacing(15);
        gridView.setNumColumns(3);

        hashlist=new ArrayList<HashMap<String,Object>>();
        for(int j=0 ;j<Two_classify_list.size();j++){
            HashMap<String, Object> map= new HashMap<String, Object>();
            map.put("fenlei_btnlist_btn_text", Two_classify_list.get(j));
            hashlist.add(map);
        }
        sAdapter=new SimpleAdapter(this,hashlist,
                R.layout.fenlei_btnlist_item,
                new String[]{"fenlei_btnlist_btn_text"},new int[]{R.id.fenlei_btnlist_btn_text});
        gridView.setAdapter(sAdapter);

        gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                 HashMap<String,String> map=(HashMap<String,String>)gridView.getItemAtPosition(arg2);
                 String btnText=map.get("fenlei_btnlist_btn_text");
                 System.out.println("------------------------!!!!!!-------------------"+btnText);


                    Bundle bundle=new Bundle();
                    bundle.putString("oneClassify", text);
                    bundle.putString("twoClassify", btnText);

                    Intent intent=new Intent(FenleiActivity.this,GoodsShowActivity.class);
                    intent.putExtras(bundle);
                    startActivity(intent);
            }
        });

因为不同的gridview中btn的数量是不同的,不知道为什么有时候点的比较靠后的btn时候就提示数组下标越界,还有就是不管我点哪个gridview,只要点的是第几个btn提示的内容是相同的,这意思就是说他不会动态获取点的那个gridview呗,为什么呢

  • 写回答

3条回答 默认 最新

  • danielinbiti 2015-06-13 08:46
    关注

    查了一下你以前发的代码,这是那段代码的其中一段吧。
    gridview是全局的,你onitemclick的时候,这个gridview表示的是最后一个的gridview,所以不管怎么点,都是最后一个gridview的内容。
    改成

    增加自定义OnItemClickListener,把gridview存起来。
     class MyOnItemClickListener implements OnItemClickListener{
            private GridView gv = null;
            public MyOnItemClickListener(GridView gv){
                this.gv = gv;
            }
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                HashMap<String,String> map=(HashMap<String,String>)gv.getItemAtPosition(arg2);  //这里使用存起来的gridview
    
            }
    
        }
    
        使用时gridView.setOnItemClickListener(new MyOnItemClickListener(gridView));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序