2012-10-16 2 views
0

맞춤 목록보기에는 텍스트를 현재 시간과 날짜로 1 분마다 주기적으로 변경해야하는 TextView가 있습니다. 사용자 정의 어댑터의의 getView에서Android : 주기적으로 맞춤 목록의 TextView 텍스트 변경보기

Timer mTimer = new Timer(); 
mTimer.scheduleAtFixedRate(new TimerTask() { 
@Override 
public void run() { 

currentTime = System.currentTimeMillis(); 
(holder.myText).setText(new Date(currentTime)); 
} 
}, 0, 60000); 

:

그래서 내가 이런 짓을.

첫 번째 어댑터 설정시 getView가 호출되기 때문에 처음으로 작동합니다.

다음 시간은 예외를 준다 :

android.view.ViewRoot $ CalledFromWrongThreadException : 견해를 터치 할 수있는 뷰 계층 생성은 원래의 스레드.

그래서이 코드를 정확히 사용해야합니까?

연습 자체가 나쁘다면 어떻게 달성 할 수 있는지 알려주세요.

당신은

+0

스레드에서 UI를 업데이트하려면 runOnUiThread를 사용하십시오. – Shafi

+0

핸들러가 잘 작동한다고 생각합니다. –

+0

@Sharath This : http://www.java2s.com/Code/Android/UI/TimingActivity.htm getView() ?? –

답변

2

당신은 UI 스레드가 아닌 스레드에서 UI 객체를 업데이트 할 수 없습니다 감사합니다. 이 시도 :

this.runOnUiThread(new Runnable(){ 
    @Override 
    public void run(){ 
     //update your TextView here 
    } 
}) 
+0

하지만이 runOnUiThread를 예약 된 것으로 만드는 방법. 내가 1 분마다 어떻게 이걸 달릴 수 있니? –

+0

Android Handlers를 살펴보십시오. 특히 postDelayed 메서드에서) –

+0

java.util.Timer 살펴 봅니다. – cproinger