【发布时间】:2014-12-07 23:50:25
【问题描述】:
我已经从 Bauer 添加了 DragSortListView 库,它可以工作。我遇到的唯一问题是 ItemClickListeners。因为他们什么都不做。我已经研究过,仍然没有有效的答案。
我遇到的一些解决问题的答案是
android:focusable="false"
android:focusableInTouchMode="false"
dslv:drag_start_mode="onMove"
但是没用
XML 部分
<com.mobeta.android.dslv.DragSortListView
xmlns:dslv="http://schemas.android.com/apk/lib/com.mobeta.android.dslv"
android:layout_width="match_parent"
android:layout_height="435dp"
android:id="@+id/listView2"
android:focusable="false"
android:focusableInTouchMode="false"
dslv:drag_start_mode="onMove"
dslv:drag_enabled="true"
dslv:collapsed_height="2dp"
dslv:drag_scroll_start="0.33"
dslv:max_drag_scroll_speed="0.5"
dslv:float_alpha="0.6"
dslv:slide_shuffle_speed="0.3"
dslv:track_drag_sort="false"
dslv:use_default_controller="true"
dslv:sort_enabled="false"
dslv:remove_enabled="true"
dslv:remove_mode="flingRemove"/>
我的片段类
db = new MySQLiteHelper(getActivity());
data = db.getAllMeal();
lv = (DragSortListView) v.findViewById(R.id.listView2);
final ArrayAdapter<RecipeDAO> adapter = new ArrayAdapter<RecipeDAO>(getActivity(),android.R.layout.simple_list_item_1, data);
lv.setAdapter(adapter);
lv.setDropListener(new DragSortListView.DropListener() {
@Override
public void drop(int from, int to) {
if (from != to) {
RecipeDAO item = adapter.getItem(from);
adapter.remove(item);
adapter.insert(item, to);
db.updateMealList(data);
adapter.notifyDataSetChanged();
}
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
//db.deleteRecipe(data.get(position).getRecipeID());
Crouton.makeText(getActivity()," deleted", Style.CONFIRM).setConfiguration(new Configuration.Builder().setDuration(700).build()).show();
Toast.makeText(getActivity()," deleted", Toast.LENGTH_SHORT).show();
}
});
【问题讨论】:
-
我假设您的听众在您使用普通的旧 ListView 时工作?
-
是的,当我使用标准列表视图时,监听器工作正常。
-
你有没有得到这个工作?
标签: android listview drag-and-drop onclicklistener