ListView item longClick



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

这似乎是ListView项目longClick的默认操作,所以我的问题是,我如何在不损坏其他内容的情况下覆盖这件事(自动滚动到longClicked项目的底部)(例如:如果我长时间单击一个不需要CAB复制/粘贴的项目,那么ListView应该像它已经做的那样处理它)。我尝试重写ListView的onItemLongClick方法以返回false(因此它会进一步传递返回值,但它似乎不一定能完成我希望它做的事情,而且它会创建一个奇怪的错误)。

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

LE:我测试了一个新的ListFragment小样本,它以一个长的(比屏幕大的)WebView作为标题,在WebView上的LongClick上,它似乎不会自动滚动到标题的底部。话虽如此,我看不出我能做些什么来创造这样的行动。任何想法都将不胜感激,也许我错误地忽略了一些小事。

您可以将OnItemLongClickListener附加到列表中。在它的回调中,您可以通过检查与长点击行相对应的位置来检查长点击行是否为网络视图,并在这种情况下返回true

在你设计好你的列表之后Adaper:例如:

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);
 }

我花了很长时间才确定这个问题的问题所在,但最终我还是做到了。

这条线:

requestWindowFeature(Window.FEATURE_NO_TITLE);

在活动中把一切都搞砸了。希望这能帮助其他人不要在上面浪费太多时间。

PS。它可以用复制

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

在xml中也是如此。

最新更新