2012-08-06 76 views
0

我得到了一個自定義ListView,我用Adaptar填充。在我的應用程序列表中的項目將會使我更新我的ImageViews像這樣根據自己的狀態改爲:更新ImageResource子代後,無法捕獲ListView項MotionEvent操作

mStatusIcon = (ImageView) findViewById(R.id.imgStatusIcon); 
mStatusIcon.setImageResource(R.drawable.icon_cancel); 

到目前爲止好。問題是我想要某種焦點/懸停狀態在我的佈局的某個部分。我在我的佈局xml中在我的View mHitfield上設置了一個OnTouchListener()

我可以捕捉到所有相關操作:ACTION_MOVE,ACTION_DOWN,ACTION_UPACTION_CANCEL

問題是,當我更改我的ImageView mStatusIcon時,我發現的下一個操作始終是ACTION_CANCEL

View mHitfield = (View) findViewById(R.id.outerShape); 

mHitfield.setOnTouchListener(new OnTouchListener() 
{ 

    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 

     int currentAction = event.getAction(); 

     switch(currentAction) 
     { 
      case MotionEvent.ACTION_DOWN: 
      case MotionEvent.ACTION_MOVE: 

       // if I comment out these lines I keep receiving all actions 
       // if I don't, I only receive ACTION_DOWN followed by ACTION_CANCEL 
       mStatusIcon.setImageResource(R.drawable.icon_download_normal); 
       break; 

      case MotionEvent.ACTION_UP: 
      case MotionEvent.ACTION_CANCEL: 

       // if I comment out these lines I keep receiving all actions 
       // if I don't, I only receive ACTION_DOWN followed by ACTION_CANCEL 
       mStatusIcon.setImageResource(R.drawable.icon_download_hover); 
       break; 
     } 

     return false; 
    } 
}); 

誰能向我解釋爲什麼發生這種情況,如果有一種方法來以防萬一這方面的工作?

回答

0

我還是不確定它爲什麼發生,但似乎TouchEvent被取消了,因爲佈局已在創建的自定義視圖中更新。一旦我沒有使用自定義視圖,而是創建了一個XML佈局,問題就不復存在了。