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)选择listview时按code>,选择响应时间或返回按钮后按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()方法。