2011-08-21 3 views
0

내 액티비티가 (일부 TCP 청취 스레드에서) 메시지를받을 때마다Listview 자체를 자동으로 업데이트하지 않습니다.

mLstAdpChatScreen.add(line); 
updateUI(); 



private void updateUI() 
{ 
    runOnUiThread(new Runnable() 
    { 
     public void run() 
     { 
      mLstAdpChatScreen.notifyDataSetChanged(); 
      mLstAdpChatScreen.notifyDataSetInvalidated(); 
      mLstVwChatScreen.requestLayout(); 
      mLstVwChatScreen.invalidate(); 
     } 
    }); 
} 

이 접근법은 대부분의 내 listview에서 작동하지만 업데이트는되지만 특정 목록보기에는 해당되지 않습니다. 내가 뭔가를 놓치고 있어야합니다 : -?

고맙습니다.

답변

0
데이터베이스에서 목록보기를 업데이트 할 때 그러나 나는이 같은 문제를 가지고 대부분의 경우 작동한다

. 나는 adapter.notifyDataSetChanged();라고 불렀지 만, 데이터가 변경되었고 ArrayList의 크기가 증가 했음에도 불구하고 listview가 전혀 업데이트되지 않았습니다. 결국

, 나는 그냥 adapter.updateData() 전화, Activity에서 다음

public class MyAdapter extends BaseAdapter{ 
    public void updateData(){ 
     this.notifyDataSetChanged(); 
    } 
} 

처럼, 그냥 notifyDataSetChanged 전화 BaseAdapter에서 연장 내 사용자 지정 Adapter 내부 방법을 구현했습니다. 그리고 이것은 나를 위해 일했습니다. 엄청 이상해.

+0

아니, 트릭을하지 않습니다 : ( – kellogs

+0

실제로 그 트릭을 - 다른 문제를 해결 한 후 – kellogs

+0

나는 UI 스레드에서 어댑터에 데이터를 추가하지 않았습니다 – kellogs

관련 문제