问题描述
- Android 在 listview 的 list item 中禁用 onclick 事件
- 在 Listview 中有一个 HeaderView。当点击它时,它隐藏文本,然后显示一个 spinner 来从别的地方获取数据。
第一次点击后,我想禁用 onClick,那样的话就不能调用多次获取。
我使用v.setClickable(false)
和v.setEnabled(false)
但是都不能正常运行。protected void onListItemClick(ListView l View v int position long id) { super.onListItemClick(l v position id); if (position == 0) { ProgressBar pb = (ProgressBar) v .findViewById(R.id.refresh_progress); pb.setVisibility(View.VISIBLE); TextView tv = (TextView) v.findViewById(R.id.load); tv.setVisibility(View.GONE); v.setClickable(false); DownloadTask dt = new DownloadTask(vOld Message""); dt.execute(); } }
有什么好的建议吗?谢谢!
解决方案
private HashMap<IntegerBoolean> map = new HashMap<IntegerBoolean>();protected void onListItemClick(ListView l View v int position long id) { super.onListItemClick(l v position id); if (position == 0 && ! map.get(position)) { map.put(positiontrue); ProgressBar pb = (ProgressBar) v .findViewById(R.id.refresh_progress); pb.setVisibility(View.VISIBLE); TextView tv = (TextView) v.findViewById(R.id.load); tv.setVisibility(View.GONE); v.setClickable(false); DownloadTask dt = new DownloadTask(vOld Message""); dt.execute(); } }
解决方案二:
private boolean wasFetchStarted = false;protected void onListItemClick(ListView l View v int position long id) { super.onListItemClick(l v position id); if (position == 0 && ! wasFetchStarted) { wasFetchStarted = true; ProgressBar pb = (ProgressBar) v .findViewById(R.id.refresh_progress); pb.setVisibility(View.VISIBLE); TextView tv = (TextView) v.findViewById(R.id.load); tv.setVisibility(View.GONE); v.setClickable(false); DownloadTask dt = new DownloadTask(vOld Message""); dt.execute(); } }
时间: 2024-10-27 14:37:57