2011-02-09 55 views
0

我必須能夠檢測到按鈕和按鈕的釋放,但是我還必須在被觸摸的gridview中放置該項目的位置。我基本上有一個d-pad控件的gridview。所以當用戶推它時,我需要它發送「去」,當他們發佈時,我需要它發送「停止」如何在gridview中獲取項目選擇的位置,或通過onItemClick檢測鍵的釋放?

與下面這個,有沒有辦法告訴他們什麼時候離開按鈕(即我知道!)。

Grid.setAdapter(new ImageAdapter(c, mThumbIds)); 
    Grid.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      Message msg = new Message(); 
      msg.what = what; 
      msg.arg1 = position; 
      cHandler.sendMessage(msg); 
     } 
    }); 

,但如果我使用一個ontouch聽者我不能告訴其在電網項目,他們選擇了

Grid.setOnTouchListener(new OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_UP) { 
        Message msg = new Message(); 
        msg.what = 255; 
        msg.arg1 = 255; 
        cHandler.sendMessage(msg); 
       } 

       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
         Message msg = new Message(); 
         msg.what = what; 
         msg.arg1 = 55; 
         cHandler.sendMessage(msg); 
       } 
       return false; 
      } 
     }); 

你的時間是極大的讚賞!

///好吧,這是我一直在嘗試做的事情,我永遠無法得到GridView的不同部分的界限。 r.getX等總是返回0.如果我有資源的id我怎麼能拉它的矩形?

Grid.setOnTouchListener(new OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_UP) { 
        Rect r = new Rect(); 
        ImageView imageView = new ImageView(c); 

        for(int n: mThumbIds){ 
         imageView.setImageResource(n); 
         r = imageView.getDrawable().getBounds(); 
         if(r.contains((int)event.getX(),(int)event.getY())) 
         { 
          Message msg = new Message(); 
          msg.what = what; 
          msg.arg1 = n; 
          msg.arg2 = (int)event.getRawY(); 
          cHandler.sendMessage(msg); 
          break; 
         }else{ 
          Message msg = new Message(); 
          msg.what = what; 
          msg.arg1 = r.centerX(); 
          msg.arg2 = n; 
          cHandler.sendMessage(msg); 

         } 
        }// end for 
       }// end if action up 

回答

0

邁克爾,那麼你有這樣的實現兩個選擇

  • 設置onclickListener每個在每個網格 項目 部件(eg.Textview/ImageView的)

OR

而你完成了!

+0

我如何迭代gridview並訪問每個項目。我一直試圖從ontouch監聽器中查找imageviews的邊界,但它總是返回0作爲x/y等。 – 2011-02-09 16:10:14

相關問題