2016-11-17 72 views
0

我有一个ImageView,我已经分配了一个点击侦听器。我试图找出如何给这个监听器一个新的函数,取决于用户在一个循环中的位置。例如,第一次点击会显示一个TextView,第二次点击会显示另一个,第三次点击会隐藏两者。迭代点击按钮上的侦听器

public void AddOption(View view) { 
     int index = 2; 

     switch (index) { 
      case 0: 
       // if we are using index 0, set the text to index 1 text and change index to 1 
       index = 1; 
       findViewById(R.id.pollOption3TextInputLayout).setVisibility(View.VISIBLE); 
       break; 
      case 1: 
       index = 2; 
       findViewById(R.id.pollOption4TextInputLayout).setVisibility(View.VISIBLE); 
       break; 
      case 2: 
       index = 0; 
       findViewById(R.id.pollOption3TextInputLayout).setVisibility(View.GONE); 
       findViewById(R.id.pollOption4TextInputLayout).setVisibility(View.GONE); 
       break; 
     } 
    } 

我该如何去做这件事?

+2

如何在活动中添加一个字段来存储点击次数?如果你更需要这个,你甚至可以用你自己的监听器实现来抽象出它。 –

+2

保持索引变量不在监听器中,确保管理设置和重置此索引的位置,并且每次单击该项目时,都会在onClick方法内增加此索引。 – Ak9637

回答

2

保持你的索引你的方法外(最简单的方法):

int index = 0; 
public void AddOption(View view) { 
    switch (index) { 
     ... 
+0

谢谢。这工作! – santafebound

1

创建一个实现View.OnClickListener接口的自定义类。然后为这个类添加一个索引整数属性,以及一个用于从其他类中更改其值的setter。

公共类CustomClickListener实现View.OnClickListener {

private Integer index; 

    public CustomClickListener() { 
     this.index = 0; 
    } 

    public void onClick(View v) { 
     switch (this.index) { 
     case 0: 
      //Do wat yo want when index is 0 
      break; 
     case 1: 
      //Do wat yo want when index is 1 
      break; 
     case 2: 
      //Do wat yo want when index is 2 
      break; 
     } 
    } 

    public void setIndex(Integer index) { 
     this.index = index; 
    } 

} 

然后,实例化您的自定义点击监听器类的活动属性,并将其设置为您的视图。这样做后,如果您在任何地方设置此侦听器的索引值,单击该视图时,索引值将具有正确的值。

public class YourActivityClassWithTheViewAndTheIndex { 

    private View yourView; 
    private CustomClickListener customClickListener; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      this.customClickListener = new CustomClickListener() 
      this.yourView.setOnClickListener(this.customClickListener); 

      //iterate over the index, or whatever, and set it to the listener 
      this.customClickListener.setIndex(3); 
     } 

} 

我希望这有助于!