到目前为止,我一直在开发一个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的拖放功能重复工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)