2011-01-12 2 views
1

일반 영어로는 텍스트보기가 있는데, 클릭하면 펼쳐지기를 원합니다. 다시 클릭하면 압축됩니다. 어떻게해야합니까? 나는 아래에서 시도했지만, 마지막 줄에서 expander가 holderFinal.text.setOnClickListener (expander)에서 초기화되지 않을 수도 있다고 경고한다. 당신이 압축 또는 확장 상태에 있다면 당신은 그냥 알아확장 및 축소를 위해 재귀 onClickListener를 만드는 방법은 무엇입니까?


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); 
     } 
    }); 
} 
}; 
+1

아마도이 확장기를 "this"로 바꿉니다. –

+0

DUH !!! 그럼이게 더 나를 잡았지만, 확장, 붕괴, 그리고 확장을 거부 .... 더 많은 디버깅 – hunterp

+0

기다려 ....이 내부 의미 그래서 어떻게 외부 수신기를 얻을 수 있습니까? – hunterp

답변

3

당신이 태그 속성을 사용할 수 있는지 중첩 재정의를 사용할 필요가 없습니다 :

를 그렇다면, 여기
0

Coulnd't : 이제 코드

?

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

+0

이 코드는 컴파일되지 않습니다 : new View.OnClickListener() { } else { – hunterp

+0

하하, 방금 입력했습니다. 일부 바인딩 될 것입니다.} 그리고 누락되면 디버깅 할 수 없습니다. 그것은 체크하지만, 내가 제안한 아이디어입니다 ... – Nanne

+0

그걸로 일부 물건을 고정 – Nanne

0

솔루션입니다 :) 같은

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

또는 무언가로 이동

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); 
    } 
    } 
}); 
관련 문제