程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> btn-Android獲取GridView裡的item內容時獲取的內容不是點擊的。

btn-Android獲取GridView裡的item內容時獲取的內容不是點擊的。

編輯:編程綜合問答
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呗,為什麼呢

最佳回答:


查了一下你以前發的代碼,這是那段代碼的其中一段吧。
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));
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved