开发者社区> 问答> 正文

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

screenshot
如图,快餐,烧烤这些白色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呗,为什么呢

展开
收起
爵霸 2016-06-16 09:17:17 2772 0
1 条回答
写回答
取消 提交回答
  • 查了一下你以前发的代码,这是那段代码的其中一段吧。
    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));`
    
    2019-07-17 19:40:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载