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_UP
和ACTION_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;
}
});
誰能向我解釋爲什麼發生這種情況,如果有一種方法來以防萬一這方面的工作?