gpt4 book ai didi

android - 使用拖动排序 ListView (DSLV) 时不会触发 setOnItemLongClickListener 和 setOnItemClickListener

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:50 25 4
gpt4 key购买 nike

我正在使用 Carl Bauer (https://github.com/bauerca/drag-sort-listview) 的优秀拖动排序 ListView 来实现启用拖动排序的 ListView 。但是,我的要求是不需要列表上的拖动 handle ,而是允许用户使用项目本身拖动列表项。

通过将 @id/drag 属性设置为列表项本身,我已经让这部分工作了。但是,它具有不响应 itemClick 和 itemLongClick 事件的副作用。

有没有什么方法可以让项目点击/长按在没有单独的可拖动布局的情况下工作?

作为引用,我的代码如下所示 -

ListView .xml:

<com.mobeta.android.dslv.DragSortListView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dslv="http://schemas.android.com/apk/res/com.myproject"
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
dslv:collapsed_height="1dp"
dslv:drag_scroll_start="0.33"
dslv:max_drag_scroll_speed="0.5" />

项目 View .xml:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="@dimen/list_item_height"
android:orientation="horizontal">
<CheckBox
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"/>
<TextView
android:id="@+id/drag"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:padding="@dimen/list_padding"
android:gravity="center_vertical" />
</LinearLayout>

Activity .java:

    DragSortListView listView = (DragSortListView) view.findViewById(R.id.list);

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(arg0.getContext(), ((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();
return false;
}
});

listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View itemView, int index,
long id) {
Toast.makeText(getView().getContext(), ((TextView)itemView).getText(), Toast.LENGTH_SHORT).show();
}
});

作为奖励,如果有人可以帮助启用除单击/长按之外的多选功能,我们将不胜感激。

谢谢!

最佳答案

为了能够在列表中使用 OnItemClickOnItemLongClick,您需要将此参数设置为 com.mobeta.android.dslv.DragSortListView布局。

dslv:drag_start_mode="onMove"

关于android - 使用拖动排序 ListView (DSLV) 时不会触发 setOnItemLongClickListener 和 setOnItemClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com