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

android-为什么DynamicListview的拖放功能重复工作,第1张

概述到目前为止,我一直在开发一个android应用程序.我想将DynamicListview的拖放功能添加到我的ListView中.我遵循Google的tutorial并使用此教程代码.我已成功添加了此功能,但是当我触摸listview元素并将其拖动到另一行时,drapdrop会重复工作,它将再次创建另一个listview元素.当我从lis

到目前为止,我一直在开发一个android应用程序.我想将DynamicListvIEw的拖放功能添加到我的ListVIEw中.我遵循Google的tutorial并使用此教程代码.我已成功添加了此功能,但是当我触摸ListvIEw元素并将其拖动到另一行时,drap drop会重复工作,它将再次创建另一个ListvIEw元素.当我从ListvIEw元素中松开手指时,它本身可以正常工作.Google的教程也正常工作,也没有出现此问题.为了解决我的问题,我添加了两个视频.首先是我的视频; drag-drop issue和运作良好的google’s tutorial video(正如您在视频中看到的那样,当我尝试移动区域时,区域字段在每次移动时都会重复出现,Google的教程效果很好)

我该如何解决此问题.

我的代码很长,所以我在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对象中)该项目不再在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;}

笔记:

>代码holder.text.setText确保即使没有移动的项目也像其他项目一样被刷新.
>为了澄清起见,如果convertVIEw不= null,则表示该视图已回收,并已显示在当前视图中.我认为这是您的问题.
>我注意到使用setTag方法调用的代码,但我跳过了它们,因为我仍然看不到哪个代码正在引用这些标签.也许您知道得更多.

总结

以上是内存溢出为你收集整理的android-为什么DynamicListview的拖放功能重复工作全部内容,希望文章能够帮你解决android-为什么DynamicListview的拖放功能重复工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1080129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存