我的ListView中有一个HeaderView。单击它时,它会隐藏文本并显示一个微调器以从某处获取数据。
我想在第一次点击后禁用onClick
,这样他就无法多次调用fetch。
我尝试了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(v, "Old Message");
dt.execute();
}
}
答案 0 :(得分:4)
可能最好跟踪一个事实,即您已经在活动中使用成员var完成/开始了一次获取,然后在OnClick处理程序中对其进行测试
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(v, "Old Message");
dt.execute();
}
}
答案 1 :(得分:1)
如何创建具有isAllItemsEnabled()和isEnabled(position)的ArrayAdapter子类
http://developer.android.com/reference/android/widget/BaseAdapter.html#areAllItemsEnabled%28%29