2012-02-24 94 views
0

我有點小問題,我將如何識別哪個項目被點擊OnClickEvent。我使用Images + Text繪製gridview菜單。這裏是我的代碼:獲取哪個項目被點擊

public class MyActivity extends Activity implements OnItemClickListener { 

    GridView menu; 
    private String[] menu_text = { 
    "Menu1", 
    "Menu2", 
    "Menu3", 
    "Menu4", 
    "Menu5", 
    "Menu6", 
    "Menu7", 
    "Menu8"}; 

    private Integer[] menu_icon = { 
      R.drawable.icon, 
      R.drawable.icon, 
      R.drawable.icon, 
      R.drawable.icon, 
      R.drawable.icon, 
      R.drawable.icon, 
      R.drawable.icon, 
      R.drawable.icon,}; 

    /** Called when the activity is first created. */ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     setContentView(R.layout.main); 

     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);  

     menu = (GridView)findViewById(R.id.Menu); 
     menu.setOnItemClickListener(this); 
     menu.setAdapter(new MenuItem(this, R.layout.menu_item, menu_text)); 

     } 

    public class MenuItem extends ArrayAdapter { 
     public MenuItem(Context context, int textViewResourceId, String[] objects) { 
     super(context, textViewResourceId, objects); 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      LayoutInflater inflater=getLayoutInflater(); 
      View row=inflater.inflate(R.layout.menu_item, parent, false); 
      TextView tv=(TextView)row.findViewById(R.id.text); 
      tv.setText(menu_text[position]); 
      tv.setTextColor(Color.BLACK); 
      tv.setCompoundDrawablesWithIntrinsicBounds(0, menu_icon[position], 0, 0); 
      return row; 
      } 

    } 

    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { 
    // TODO Action to perform 


    } 
    } 

所以我的問題是我怎麼能識別被點擊了這個格菜單哪個項目。

+0

公共無效onItemClick(適配器視圖爲arg0,查看ARG1,INT ARG2,長ARG3){ 字符串menuText = MENU_TEXT [ARG2]; Drawable d = getResources()。getDrawable(menu_icon [arg2]); } – 2012-02-24 12:08:36

回答

1

arg2 int在參數onItemClick中是按下的項目在數組中的位置。

所以

public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { 
    // TODO Action to perform 
    String selectedObject = objects[arg2]; //objects is the String array passed to the adapter. 
} 
+0

謝謝。我只使用了arg2:if(arg2 == 0)... – HyperX 2012-02-24 12:25:59

-1

你已經在這個點擊上覆蓋了onItemClick方法,查看arg1它的View被單擊,第三個參數arg2是gridview中item的位置。

0

如果你讀了OnItemClickListener文檔,你會發現,在onItemClick方法給你幾個參數:

父在點擊發生的適配器視圖。
view AdapterView中被點擊的視圖(這將是適配器提供的視圖)
position視圖在適配器中的位置。
id被點擊的項目的行ID。

位置會給你點擊的項目的索引