小编Jux*_*ion的帖子

什么决定了Java对象的大小?

是什么促成了内存中单个对象的大小?

我知道原语和引用会,但还有什么吗?方法的数量和长度是否重要?

java memory-management

41
推荐指数
2
解决办法
5237
查看次数

帮助解决Android UI ListView问题

要理解这个问题,首先要阅读此方法的工作原理.

我正在尝试实现拖放ListView,它没有问题,但已经遇到了障碍.所以,我没有处理的一切,我拦截(但返回false)MotionEvents发送到ListView,让它处理滚动之类的东西.当我想开始拖动一个项目时,我返回true并处理所有拖动的东西.除了一件事,一切都很好.当确定长按(在onInterceptTouchEvent中)时,启动拖动(拖放).我得到了像我这样拖动的图像的Bitmap.itemPositition是所选项目的索引.

(省略不相关的部分)

...
View dragItem = mListView.getChildAt(itemPosition);
dragItem.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(dragItem.getDrawingCache());
mDragImage = new ImageView(mContext);
mDragImage.setImageBitmap(bitmap);
...
Run Code Online (Sandbox Code Playgroud)

问题是,mDragImage是一个像这样的纯黑色. 一个可靠的后位图

但是,如果我不让ListView处理任何事情.就像在,我开始在ACTION_DOWN上拖动并在ACTION_UP上停止,mDragImage看起来已经预期(但我显然失去了滚动功能).

一个好的位图

由于拖动是通过长按开始的,因此ListView有机会在长按之前执行操作.这是我猜测为什么会发生这种情况的原因.按下某个项目时,ListView会突出显示该项目.在这样做的某个地方,它正在搞乱位图.因此,当我去获取它时,它处于一种奇怪的状态(全黑).

我看到两种解决这个问题的方法,我都不知道怎么做.

  1. 从头开始创建图像.

  2. 自己处理突出显示(如果这是问题).

对我来说,选项二似乎更好,除了我查看了文档和源代码,但无法找到如何执行此操作.以下是我做过/试过的一些事情.

  • 我用一个空方法设置setOnItemClickListener(...)setOnItemSelectedListener(...)(突出显示仍然发生).(在任何人建议之前,调用 setOnClickListener会导致运行时错误.)

  • 我还试图让ListView创建一个新项目(对于选项2),但找不到方法.

  • 花了45分钟查看源代码和文档,试图找出突出显示的位置(我从未找到它).

任何帮助解决这个问题将不胜感激.

(EDIT1 START)

所以我实际上并不知道onLongClickListener是否正常工作,我在思考它之前犯了一个错误.我正在尝试立即设置它,当我发现它是否确实时会更新.

(EDIT1 END)

发布前的最后一分钟编辑.我刚刚尝试使用onLongClickListener,图像很好.我还是想知道是否还有其他办法.我如何使用onLongClickListener来使事情工作是丑陋的,但它的工作原理.我也花了很多时间试图解决这个问题,找到答案会很高兴.我仍然希望能够更改/处理高光颜色,默认的橙色颜色并不漂亮.哦,抱歉帖子的长度.我想不出让它缩短的方法,同时提供我认为需要的所有信息.

android drag-and-drop highlighting android-listview

5
推荐指数
1
解决办法
1102
查看次数