2017-05-07 37 views
0

我有一个ListView,当我按住(长按)某个项目时,该项目将从列表中删除。onTouch在LongTouch后立即注册

它正在注册一个接触之后,而长时间的接触仍在发生。

这里是我的代码 -

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

       Intent intent = new Intent(getApplicationContext(), MapsActivity.class); 
       intent.putExtra("placeNumber", i); 
       intent.putExtra("Type", "Fav"); 

       startActivity(intent); 
      } 
     }); 

     listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
       Log.i("Removing", "" + favouriteLocations.get(position)); 
       favouriteLocations.remove(position); 
       Favourites.arrayAdapter.notifyDataSetChanged(); 
       return false; 
      } 

     }); 

让长按一个“虚拟”触摸在其中长触摸了(一个新的项目已经在列表中向上移动)的项目出现的进去后和活动加载,就好像它已经被触摸一样。

它工作得很好,我确信我没有更改代码。有任何想法吗?

谢谢。

+0

您将OnTouchListener设置为整个ListView,而不是每个项目,这是您真正想要的吗?也许会更容易通知OnItemLongClickListener内部的数据更改并删除OnTouchListener。干杯! – miibpa

+0

我对所有这些都是陌生的,所以如果我弄错了,请原谅我,但我只是在那里放置onTouchListener来检测触摸何时停止。我现在意识到任何触摸现在会延迟一秒,对吗?我现在编辑它。 – AndyCr15

回答

1

你从long click listner需要return true,你必须在XML有这个太android:longClickable="true"但列表视图是可长按默认所以没有必要在所有更新XML。

+0

太棒了。谢谢 :-) – AndyCr15