Android禁用onclick列表视图中的listitem

时间:2011-12-16 06:45:14

标签: android listview

我的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();

        } 
}

2 个答案:

答案 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