2 guandongzhi guandongzhi 于 2014.10.08 09:32 提问

在listview中,在点击某行按钮后,按钮变灰。其它的行的按钮也变灰了。

在listview中,每行显示一个图片、一个按钮及说明文字,在点击某行按钮后,按钮变灰。但是发现点击某行的按钮后,在滑动界面时,发现其它的行的按钮也变灰了。请问这是什么问题?

下面是listview中getView方法代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// TODO:点击按钮时,会操作多个按钮问题
if (convertView == null) {
convertView = inflater.inflate(R.layout.download_listview_oneline, null);
holder = new ViewHolder();

        // TODO:网络上获取图片
        holder.img = (ImageView)convertView.findViewById(R.id.imageViewId);
        holder.textViewId1 = (TextView)convertView.findViewById(R.id.textViewId1);
        holder.button1 = (Button)convertView.findViewById(R.id.button1);


        // 不按比例缩放图片,目标是把图片塞满整个View
        holder.img.setScaleType(ImageView.ScaleType.FIT_XY);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder)convertView.getTag();
    }

    try {
        Integer value = R.drawable.class.getDeclaredField(images[position].substring(0, images[position].indexOf("."))).getInt(null);
        holder.img.setImageResource(value);
    } catch (Exception e) {
        e.printStackTrace();
    }

    holder.textViewId1.setText(dess[position]);
    holder.button1.setOnClickListener(new View.OnClickListener()
    {

        @Override
        public void onClick(View view)
        {
            // TODO

// view.setEnabled(false);
if(view.getId() == R.id.button1)
{
Button b = (Button)view;
// 点击后该按钮变灰,不能再点
b.setEnabled(false);
dao.updateLastClickTime(2, _ids[position]);
String url = urls[position];
String filename = url.substring(url.lastIndexOf("/") + 1);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
checkFile(DIR, filename);
request.setDestinationInExternalPublicDir(DIR, filename);
long downloadId = downloadManager.enqueue(request);
//保存id
downloads.put(downloadId, _ids[position]);
}

        }
    });
    return convertView;
}
// 标记tag
public final class ViewHolder {   
    public ImageView img;
    public TextView textViewId1;
    public Button button1;
}

1个回答

qq787068730
qq787068730   2014.10.13 11:55

holder.button1.setOnClickListener里的判断“if(view.getId() == R.id.button1){Button b = (Button)view; // 点击后该按钮变灰,不能再点 b.setEnabled(false);... ...}”不能这样写。首先,getView()是ListView每增加一个item的内容时执行一次。而,你刚才那个判断的意思是,只要你点了随便哪一个button1,所有button1状态全部改变。因此,虽然有些暂时没变(是因为getView()已经被调用),只要你上下滑动一下ListView,getView()方法重新被执行,button1状态就都变了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在ASP.NET中点击一个按钮后让它变灰的简单方法
  点击一个按钮,立即让它失效,  这在asp或jsp中用javascript来处理是非常简单的,  但asp.net有些地方总是让人出乎意料。  如果你用的是webForm的button控件,  企图点击它后让它失效,  那处理起来就有点复杂了(我还不知道怎么处理)。  当时直接在button的click事件中(服务端),  用一句:butSubmit.Enabled=false;  企图来达到
点击一个按钮后,使按钮变灰(不可能点)
pageEncoding="UTF-8"%> 按钮变灰(不可点击)     function upload(obj){         document.getElementById(obj).disabled = true;     }                    主要是把
js中实现button按钮变灰不可用,可用的方法
按钮变灰不可用方法:document.getElementById("crop").setAttribute("disabled", true); 按钮可用方法:document.getElementById("crop").removeAttribute("disabled"); 按钮隐藏方法:$("#crop").hide();或document.getElementById(‘cro
点击按钮变成灰色不可再次点击
原文转载自http://www.santii.com/article/24.html 很多时候,当我们点击提交按钮,如果因为执行的程序太慢,或是网络问题,就会一直处于提交状态。 不了解的人,还以为是没有提交成功,于是就会一直点提交、提交、提交…… 这样就会造成多次提交,而产生重复记录。 那么要如何才能防重复提交呢? 小编的做法就是,使用js来控制。 当点击提交后将按钮变成
点击按钮后背景变灰+阻止事件
最近做了几个点击按钮出现弹出框后,背景变灰且不可操作
提交按钮变灰色不可用状态
点击提交按钮后按钮变灰色不可用状态 表单提交后按钮变成灰色 onclick="javascript:{this.disabled=true;document.form1.submit();}"> ===================== 倒计时结束后按钮才由灰色(不可点击)变成可点击 JS控制在规定时间内结束后才可以点击下一步
表单提交后按钮变灰不可用的方法
 表单提交后按钮变灰不可用的方法在点击“Submit按钮”之后,将Submit设置为Disable,使按钮变灰不可用,具体的做法如下:1、先在Form里加入:onSubmit="submitonce(this)"2、再在“Submit按钮”之前加入下面的代码:function submitonce(theform){if (document.al
vc按钮按下后变灰(不能再按)
用函数: GetDlgItem(IDC_BUTTON_START)-> EnableWindow(FALSE); 这样按钮按下后就变味灰色了,不能再触发了,参数是FALSE。 然后,用别的函数激活它,参数是TRUE: GetDlgItem(IDC_BUTTON_START)-> EnableWindow(TRUE); IDC_BUTTON_STAR
C# winform 的闭关按钮变灰,及取消关闭事件
转载请注明来自: http://blog.csdn.net/laorer查了些资料,有两种方式,下面是一种,但是没有达到效果,不知道哪里出了问题     private bool isEnableCloseButton = true; protected override CreateParams CreateParams {
表单提交后按钮变成灰色
表单提交后按钮变成灰色