2013-07-06 66 views
0

我有一個GridView,其中我爲每個項目添加了一個LinearLayout。 LinearLayout按垂直順序包含圖像和文本視圖。需要在GridView上點擊兩次項目

當我點擊該項目時,第一次在項目中看到藍色背景並且第二次點擊時,GridView的onItemclick偵聽器觸發。我想知道爲什麼它不是在第一次點擊發射。

網格視圖定製適配器的getView方法是:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LinearLayout ll = new LinearLayout(ctx); 
    ll.setOrientation(LinearLayout.VERTICAL); 

    ImageView imgView = new ImageView(ctx); 
    imgView.setImageResource(imgIds[position]); 
    imgView.setFocusable(false); 
    imgView.setFocusableInTouchMode(false); 

    TextView tv = new TextView(ctx); 
    tv.setText(names[position]); 
    tv.setGravity(Gravity.CENTER); 

    ll.addView(imgView); 
    ll.addView(tv); 

    ll.setFocusable(false); 
    ll.setFocusableInTouchMode(false); 
    ll.setClickable(false); 

    return ll; 
} 

這個網格上項目點擊監聽器在MainActivity是:

GridView gv = (GridView) findViewById(R.id.gv); 
gv.setAdapter(new GridAdapter(MainActivity.this)); 
gv.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View v, int position, 
      long id) { 

     popupMenu = new PopupMenu(MainActivity.this, v); 
     popupMenu.getMenu().add(Menu.NONE, ONE, Menu.NONE, "Play"); 
     v.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       popupMenu.show(); 
      } 
     }); 
    } 
}); 

不知道如何可以顯示在單一點擊彈出菜單僅。

回答

1

爲什麼不調用popupMenu.show();直接在onItemClick()?只是

popupMenu.show(); 
1

你設置彈出菜單中顯示時,在網格中的項目被點擊您單擊表格替換代碼

v.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      popupMenu.show(); 
     } 
    }); 

試試這個:

@Override 
    public void onItemClick(AdapterView<?> parent, View v, int position, 
      long id) { 

     popupMenu = new PopupMenu(MainActivity.this, v); 
     popupMenu.getMenu().add(Menu.NONE, ONE, Menu.NONE, "Play"); 
       popupMenu.show(); 
     }); 
    } 
相關問題