用简单的英语来说,我有一个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);
}
}
});