Android Java multiimagebutton数组OnClick和切换背景颜色



我已经尝试了一些不同的解决方案,但仍然没有找到一个合适的聪明的解决方案。在活动中将有多达20个ImageButton的,当用户按下按钮的背景改变颜色,都很简单。但是看起来做一些非常简单的事情需要很多代码。

与其他响应,似乎你可以有一个共同的OnClick从ImageButton XML,但仍然有一个庞大的开关语句检查每个ImageButton。我已经尝试了一个数组的onclicklistener(),但无法计算出哪个图像按钮已按下。

如果唯一的方法是一个很长的" If "语句或"开关";然后复制&粘贴代码,但只是想知道是否有一个更容易和更智能的方式来管理这些多个ImageButtons

ElementButton0 = (ImageButton) findViewById(R.id.elementButton0);
ElementButton1 = (ImageButton) findViewById(R.id.elementButton1);
ElementButton2 = (ImageButton) findViewById(R.id.elementButton2);
ElementButton0.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
if (ElementButton0.isPressed() == true) {
if (elementbuttonstate0 == true)
{
ElementButton1.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));
elementbuttonstate0 = false;
} else {
ElementButton1.setBackgroundColor(getResources().getColor(android.R.color.holo_green_dark));
elementbuttonstate0 = true;
}
}
}
});
ElementButton1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
if (ElementButton1.isPressed() == true) {
if (elementbuttonstate1 == true)
{
ElementButton1.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));
elementbuttonstate1 = false;
} else {
ElementButton1.setBackgroundColor(getResources().getColor(android.R.color.holo_green_dark));
elementbuttonstate1 = true;
}
}
}
});
ElementButton2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
if (ElementButton2.isPressed() == true) {
if (elementbuttonstate2 == true)
{
ElementButton2.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));
elementbuttonstate2 = false;
} else {
ElementButton2.setBackgroundColor(getResources().getColor(android.R.color.holo_green_dark));
elementbuttonstate2 = true;
}
}
}
});

我假设您已经在xml中创建了20个ElementButton。我们可以把它去掉。我们可以使用RecyclerView实现来实现。

  1. 使用RecyclerView充气20件
  2. Handle点击回收站查看项目。这将给你一个用户点击的position
  3. isPressed()逻辑切换被点击元素的背景。

最新更新