gpt4 book ai didi

android - 为什么 DynamicListview 的拖放功能重复工作

转载 作者:可可西里 更新时间:2023-10-31 22:03:53 24 4
gpt4 key购买 nike

到目前为止,我一直在开发 Android 应用程序。我想将 DynamicListview 的拖放功能添加到我的 ListView。我关注谷歌的 tutorial并使用本教程代码。我成功添加了此功能,但 drap drop 重复工作,当我触摸 listview 元素并将其拖动到另一行时,它会再次创建另一个 listview 元素。当我从 listview 元素上松开手指时,它本身可以正常工作。谷歌的教程也可以正常工作,但没有遇到这个问题。为了解决我的问题,我添加了两个视频。首先是我的视频; drag-drop issue好好工作google's tutorial video (正如您在视频中看到的那样,当我尝试移动地区时,地区字段在每次移动时都会重复,谷歌的教程效果很好)

我该如何解决这个问题。

我的代码很长,所以我在 github gist 上分享了;

这是我的 DynamicListView 类;

https://gist.github.com/salihyalcin/bd9a3c23179f44212419

这是我的 NavigationDrawer 类:

https://gist.github.com/salihyalcin/620467a96fdce3129d1b

最后是我的 NavigationDrawerListViewAdapter:

https://gist.github.com/salihyalcin/474423f5705dbe41e8d6

最佳答案

我主要查看了 DynamicListView 和 NavigationDrawerListViewAdapter 类中的代码。正如我在评论中所说,我熟悉 DynamicListView 代码,您的代码看起来不错。

我看到的问题是您的 originalItem 在原始(错误)位置保持可见,但在内部(在 NavigationDrawerListViewAdapter 的 ArrayList 对象中)项目不再处于相同位置 在数组列表中。这是一个强烈的迹象,表明该项目没有在正确的时间刷新。您确实在 DynamicListView 中调用了 getAdapter().notifyDataSetChanged() 但这仅适用于正在移动的 2 个项目。未移动的项目,即原始项目,停留在相同的错误位置,但需要刷新才能更新到正确的位置。从视觉上我知道这并不明显!

我怀疑 NavigationDrawerListViewAdapter 中的 getView 方法需要更新。方法 getView 负责显示 Listiview 中的所有项目! getView 中的代码具有相当奇怪的编码技术,需要按照 Google developer.android.com 的建议以常规方式编码。好的部分是我认为您不需要主要代码更新来解决您的问题。

代码建议:

public View getView(final int position, View convertView, final ViewGroup parent) {
ViewHolder holder = null;

final NavigationDrawerFragment.ListItem i = myItems.get(position);

if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.navigation_drawer_listview_simple, null);

holder.text = (TextView) convertView.findViewById(R.id.textView123);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}

holder.text.setText(i.textdata);

return convertView;
}

注意事项:

  1. 代码 holder.text.setText 确保即使没有移动的项目也像其他项目一样刷新。
  2. 需要说明的是,如果convertView不为null,表示 View 被回收,已经显示在当前 View 中。我认为这是你的问题。
  3. 我注意到使用 setTag 方法调用的代码,我跳过了它们,因为无论如何我都看不到哪个代码引用了这些标签。也许你知道得更多。

关于android - 为什么 DynamicListview 的拖放功能重复工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30500695/

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