如圖,快餐,燒烤這些白色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));