如何防止双击ListView?

时间:2014-02-10 20:27:55

标签: android android-listview android-gesture

无论如何都要防止在Android中点按ListView?当我意外地在ListView上点击了项目时,我发现了这个,它打开了两个新窗口。有没有办法防止它两次打开同一个窗口。

5 个答案:

答案 0 :(得分:0)

尝试引入和覆盖isEnabled方法

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

列表视图。

为flag引入一个boolean,为了保持最后一次单击的位置,引入一个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;
}

希望这对你有用,防止双击,增强。

答案 1 :(得分:0)

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

this SO question的答案可以帮助您实现这一目标。这样,如果你不小心双击,你仍会看到一个新的屏幕。

答案 2 :(得分:0)

如果仅在列表中使用诸如TextView之类的单个项目,则只需在此调用中创建一个实现 OnItemClickListener 的类,然后在 onItemClick ()方法中初始化myListView。< strong> setOnItemClickListenet (空); 然后使用 Handler.postDelayed 方法再次设置 onItemClickListener 。 像

let proxy = new Proxy(arr, {
    deleteProperty: function(target, property) {
        console.log("Deleted %s", property);
        return true;
    },
    set: function(target, property, value, receiver) {
        target[property] = value;
        console.log("Set %s to %o", property, value);
        return true;
    }
});

就我而言,这一直有效。

答案 3 :(得分:0)

在您的 XAML 视图页面中,将 isEnable 属性设置为可绑定和双向模式。

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

在您的 xaml 页面的视图模型中:

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

答案 4 :(得分:-1)

只需在列表视图选择中添加listView.setEnabled(false);,然后在选择响应时或按回按钮后按下即可写入listView.setEnabled(true);