Android 如何防止双击ListView?

Android 如何防止双击ListView?,android,android-listview,android-gesture,Android,Android Listview,Android Gesture,安卓系统中是否有防止双击ListView的方法?当我无意中点击ListView上的项目时,我发现了这一点,它打开了两个新窗口。有没有办法防止它两次打开同一个窗口。尝试引入并重写isEnabled方法 @Override public boolean isEnabled(int position) { return false; } 对于listview 为标志引入一个布尔值,并为保持上次单击的位置引入一个int int recentlyClickedPoisition;

安卓系统中是否有防止双击
ListView
的方法?当我无意中点击
ListView
上的项目时,我发现了这一点,它打开了两个新窗口。有没有办法防止它两次打开同一个窗口。

尝试引入并重写isEnabled方法

    @Override
public boolean isEnabled(int position) {
    return false;
}
对于listview

为标志引入一个布尔值,并为保持上次单击的位置引入一个int

 int recentlyClickedPoisition;
        boolean flagRecentClickedPoisition;
重写isEnabled方法,如下所示

   @Override
   public boolean isEnabled(int position) {
        if (flagRecentClickedPoisition && recentlyClickedPoisition == position) {
            return false;
        } else {
            return true;
        }
    }
public void setLastClickedPoisition(int recentlyClickedPoisition) {
    flagRecentClickedPoisition = true;
    this.recentlyClickedPoisition = recentlyClickedPoisition;
}
然后从单击侦听器中设置上次单击的位置,如下所示

   @Override
   public boolean isEnabled(int position) {
        if (flagRecentClickedPoisition && recentlyClickedPoisition == position) {
            return false;
        } else {
            return true;
        }
    }
public void setLastClickedPoisition(int recentlyClickedPoisition) {
    flagRecentClickedPoisition = true;
    this.recentlyClickedPoisition = recentlyClickedPoisition;
}

希望这将有助于您防止双击,相应地增强。

您应该限制目标活动(单击项目时打开的活动)在任何时间点只有一个实例。


答案应该有助于你实现这一目标。这样,如果您不小心双击,您仍然会看到一个新屏幕。

只需添加
listView.setEnabled(false),选择响应时间或返回按钮后按write----
listview.setEnabled(true)

如果在列表中只使用单个项,如TextView,则只需在该调用中创建一个类实现OnItemClickListener,然后在toonItemClick()方法中初始化myListView。setOnItemClickListenet(null); 然后使用Handler.postDelayed方法再次设置onItemClickListener。 像


这在我的情况下一直有效。

在XAML视图页面中,将isEnable属性作为可绑定的双向模式放置

<ListView ItemsSource="{Binding items}"
                                  x:Name="listview"
                                  HasUnevenRows="True"
                                  IsEnabled="{Binding IsEnable, Mode=TwoWay}"
                                  RowHeight="10"
                                  SelectionMode="Single"
                                  VerticalScrollBarVisibility="Never">

在xaml页面的viewmodel中:

    private bool _isEnable = true;
    public bool IsEnable
    {
        get => _isEnable;
        set
        {
            _isEnable = value; OnPropertyChanged(nameof(IsEnable));
        }
    }


public ICommand TapCommand => new Command<//Model>(async (obj) =>
    {
        IsEnable = false;
       //your stuff 
        IsEnable = true;
    });
private bool\u isEnable=true;
公共福利是合理的
{
get=>\u是可接受的;
设置
{
_isEnable=值;OnPropertyChanged(nameof(isEnable));
}
}
公共ICommand TapCommand=>new命令(异步(obj)=>
{
IsEnable=错误;
//你的东西
IsEnable=正确;
});

您能提供您的代码样本或图像吗?通常情况下,事情处理得很快,这会阻止这种行为。可能重复的可能重复的可能解决方案,但不是最佳做法:(在我的情况下,它是有效的。回到listview时,我重写了OnResume()方法。