【问题标题】:Listview items show they've been clicked when they haven'tListview 项目显示它们已被点击,而没有被点击
【发布时间】:2014-06-11 00:59:55
【问题描述】:

嘿,所以我有一个带有按钮的列表视图,当单击一个时,如果您再跳过 4 个列表视图项目,则第五个显示它已在与前一个被单击的位置相同的位置被单击。单击按钮时,它被设置为不可见,并显示下方的虚拟按钮(即每隔五行显示一次的按钮)。 在 onclick 命令中声明按钮不可见的代码

boolean processClick=true;

    if(processClick == true)
     {
        myButton.setEnabled(false);
        myButton.setClickable(false);
        myButton.setVisibility(View.INVISIBLE);



        }
        processClick=false; 
        }

看了一些类似的问题后,我认为这与视图被回收有关,但仍然不知道如何补救。

非常感谢任何帮助。 谢谢!

【问题讨论】:

    标签: java android listview


    【解决方案1】:

    是的,您的代码有问题,您需要对每个 listView 行/项目进行 processClick,然后在此基础上您需要设置启用(false)或其他内容。您可以参考这个类似的示例工作,但有复选框。您需要查看该代码并使用按钮应用。它会解决你的问题。

    示例链接。 https://drive.google.com/file/d/0B6C9Pqrvc_CWZHFDcmxKR01rc3c/edit?usp=sharing

    【讨论】:

      【解决方案2】:

      当我以编程方式为列表视图项目分配背景颜色时,我遇到了类似的问题。我不知道是什么导致了问题(可能 getView() 没有被正确调用)。我通过使用 if-else 解决了我的问题。在你的情况下,这样的事情应该可以工作:

      if(processClick == true)
       {//set desired result in if
          myButton.setEnabled(false);
          myButton.setClickable(false);
          myButton.setVisibility(View.INVISIBLE);
      
          }else{//reset items to original in else
          myButton.setEnabled(true);
          myButton.setClickable(true);
          myButton.setVisibility(View.GONE);
      }
      

      【讨论】:

      • 这段代码似乎工作得更好,但是现在它跳过了 6 个列表视图项目并显示第 7 个被按下。这绝对是一个奇怪的问题,我想我可能只需要最终将点击存储在数据库中。
      • 可能是由于数组索引从零开始而选择了错误的位置,但大小将是最后一个位置+1。当我为我的自定义适配器扩展 baseadapter 时,我观察到了这一点。我猜 ArrayAdapter 不会出现这个问题。
      • 是的,我正在使用基本适配器,感谢您的回复,我会对此进行调查,我也只是注意到如果它是列表视图的第一项,这根本不会发生奇怪的事情。但是,排名第 2 和第 3 的项目仍然会出现。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多