ListView项目longClick

时间:2014-10-17 08:07:12

标签: android android-listview android-webview onitemlongclicklistener

我有一个ListFragment,我附加了一些标题(WebView和其他东西)和页脚。据我所知,Android处理WebViews的onLongClick事件,以显示带有/从剪贴板复制/粘贴的CAB。这对我来说非常好,但我的问题是每当我长时间点击WebView的内容时,为了显示CAB,这个视图(ListView的标题)会自动滚动到它的底部。

这似乎是ListView项目longClick的默认操作,所以我的问题是,如何覆盖这个东西(自动滚动到longClicked项目的底部),而不会损坏其他东西(例如:if我长时间点击一个不需要复制/粘贴的CAB的项目,而ListView应该像现在一样处理它。我尝试覆盖ListView的onItemLongClick方法返回false(因此它将进一步传递返回,但它似乎不一定做我想做的事情,它会产生一个奇怪的错误)。

基本上(我认为)如果用户长时间点击的项目包含WebView,我需要将longClick事件分派给WebView,否则ListView应该处理它。

LE:我测试了ListFragment的一个新的小样本,其中一个长(大于屏幕)的WebView作为其标题,并且看起来它不会自动滚动到WebView上的LongClick上的Header底部。话虽如此,我无法看到我能做些什么来创造这样的行动。任何想法都会非常感激,也许我错误地忽略了一些小事。

3 个答案:

答案 0 :(得分:0)

在你使用listAdaper之后

:例如:

SimpleAdapter adapter = new SimpleAdapter(
            this,
            list,
            R.layout.playlist_view,
            new String[] {"fileName","path"},
            new int[] {R.id.text1,R.id.text2}
    );

setOnLongClickListener

setListAdapter(adapter);
    ListView listView = getListView();
    listView.setOnLongClickListener(new AdapterView.OnLongClickListener() {
@Override
//Ovverride onItemLongClick click here (requires API 20+)

P.S:我的项目清单是

 ArrayList<HashMap<String,String>>

覆盖长按的示例:

public abstract boolean onItemLongClick (AdapterView<?> parent, View view, int position, long id
{
Intent service=new Intent(YourClassName.this,ClassToNavigate.class);
            service.putExtra("ElementPosition",position);
            service.putExtra("SelectedFromList",true);
            startService(service);
 }

答案 1 :(得分:0)

您可以将OnItemLongClickListener附加到列表中。在它的回调中,你可以通过检查对应于它的位置来检查长按行是否是webview,并在这种情况下返回true

答案 2 :(得分:0)

我花了很长时间才确定这个问题的问题,但最终我成功了。

这一行:

  

requestWindowFeature(Window.FEATURE_NO_TITLE);

活动中的

弄乱了一切。希望这能帮助别人不要失去这么多时间。

PS。它可以用

复制
<item name="android:windowNoTitle">true</item>

也在xml中。