使用Android ListView拖放颜色更改

时间:2014-02-05 15:24:22

标签: android

我目前正在创建一个Android应用,需要让用户知道从列表视图中选择了哪些播放器。每个玩家只能玩三次,所以我希望每次选择名称时都能改变列表视图中背景的颜色。

当我点击一个项目时,它将变为绿色。在列表视图中单击其他项目时,它将变为黄色。但是,我希望计数在同一列表视图项上。

我在下面粘贴了我的代码。有人能告诉我一次计算单个列表视图项目的点击次数吗?

TextView text1 = (TextView)v;
if (numberOfClicks == 1) 
{
    text1.setBackgroundColor(Color.GREEN);
    v.findViewById(android.R.id.text1);
} 
else if (numberOfClicks == 2) 
{
    text1.setBackgroundColor(Color.YELLOW); 
    v.findViewById(android.R.id.text1);
} 
else if (numberOfClicks == 3) 
{
    text1.setBackgroundColor(Color.RED);
    v.findViewById(android.R.id.text1);
}
numberOfClicks++;

2 个答案:

答案 0 :(得分:0)

在适配器中声明一个int数组:

int[] numberOfClicks;

在适配器的构造函数中初始化它。

numberOfClicks=new int[data.size()];

现在在getView

    TextView text1 = (TextView)v;
    if(numberOfClicks[position]==1)
    {
        text1.setBackgroundColor(Color.GREEN);
        v.findViewById(android.R.id.text1);
    }

    else if (numberOfClicks[position]==2)
      {
         text1.setBackgroundColor(Color.YELLOW);    
         v.findViewById(android.R.id.text1);
      }

    else if (numberOfClicks[position]==3)
      {
          text1.setBackgroundColor(Color.RED);
          v.findViewById(android.R.id.text1);
      }
        numberOfClicks[position]++;

答案 1 :(得分:0)

它是尖峰,但可以工作:

HashMap<Integer, Integer> mClickedMap = new HashMap<Integer, Integer>();
        ...
if (mClickedMap.get(v)==1){
    text1.setBackgroundColor(Color.GREEN);
    v.findViewById(android.R.id.text1);
} 
        ...
mClickedMap.put(v,numberOfClicks++);