我已经实现了gallery和ListvIEw.
画廊有图像,当我单击使用setonItemSelectedListener ListvIEw的图像时,将更新有关选定图像的信息.
问题:当我快速浏览图库时,它会快速更新我的列表视图.但是据我说,ListvIEw应该等待图库停止在任何一张图像上移动,然后更新其内容.
任何人都知道该怎么做,或者在更新ListvIEw之间增加时间?请帮忙..
解决方法:
您可以改为尝试setonItemClickListener.仅当您实际“点击”图像时才触发它,而不仅仅是选择它.
gallery.setonItemClickListener(new OnItemClickListener() { public voID onItemClick(AdapterVIEw<?> parent, VIEw v, int position, long ID) { // Do what you want } });
更新:
如果要延迟动作,而不是onItemClickListener实现,则有(至少)两个选择.一种是使用超时(Thread.sleep())运行单独的线程,完成后,可以使用Handler更新活动状态.另一个选择是使用AsyncTask,这在技术上是相同的方法,它仅将Runnable任务和Handler包装在一个内部类中.最简单的实现可能是这样的:
ListUpdater ListUpdater; @OverrIDepublic voID onItemSelected(AdapterVIEw<?> arg0, VIEw arg1, int position, long arg3) { // We have to run this thread to add delay before updating activity vIEws if (ListUpdater != null) { // Cancel prevIoUs task ListUpdater.cancel(true); } if (ListUpdater == null || position != ListUpdater.getposition()) { ListUpdater = null; ListUpdater = new ListUpdater(position); ListUpdater.execute(); }}class ListUpdater extends AsyncTask<String, String, String> { private int position; public int getposition() { return position; } public ListUpdater(int position) { this.position = position; } @OverrIDe protected String doInBackground(String... params) { try { Thread.sleep(600); // set delay time here } catch (InterruptedException e) { } return null; } @OverrIDe protected voID onPostExecute(String result) { if (!isCancelled()) { // If another thread is not running, // that is if another item was not selected, // update the activity // Add code here to update the activity // This method works in UI Thread, so you don't need to use Handler // For example: Toast.makeText(YourActivity.this, "" + position, Toast.LENGTH_SHORT).show(); } super.onPostExecute(result); }}
这是实施延迟的一个例子.不一定要精确满足您的需求,但是您可以从中获得一些有关如何实现的想法.
总结以上是内存溢出为你收集整理的Android Gallery视图侦听器会增加延迟吗?全部内容,希望文章能够帮你解决Android Gallery视图侦听器会增加延迟吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)