用简单的英语来说,我有一个textview,当我单击它时,我希望它扩展,当我再次单击它时,我希望它压缩。我怎样才能做到这一点?我已经尝试过下面的方法,但是它警告关于扩展器的最后一行可能未在holderFinal.text.setOnClickListener(expander)上初始化;

所以现在的代码:


final View.OnClickListener expander = new View.OnClickListener() {
@Override
  public void onClick(View v) {
    holderFinal.text.setText(textData);
    holderFinal.text.setOnClickListener( new View.OnClickListener() {
    @Override
      public void onClick(View v) {
        holderFinal.text.setText(shortText);
        holderFinal.text.setOnClickListener(expander);
      }
    });
 }
};

最佳答案

如果可以使用tag属性,则无需使用嵌套替代:

const int COLLAPSED = 0;
const int EXPANDED = 1;
// set initial value(s) somewhere
holderFinal.setTag(COLLAPSED);
holderFinal.text.setText(shortText);


holderFinal.text.setOnClickListener( new View.OnClickListener() {
@Override
  public void onClick(View v) {
    int i = (int)holderFinal.getTag();
    if (i == EXPANDED)
    {
      holderFinal.setTag(COLLAPSED);
      holderFinal.text.setText(shortText);
    }
    else
    {
      holderFinal.setTag(EXPANDED);
      holderFinal.text.setText(textData);
    }
  }
});

08-17 01:05