2013-12-12 59 views
0

我已經定義了一個ListView,塔從服務獲取數據,它有一個空的觀點太:清空列表視圖黑色閃光

public class MyActivity extends Activity { 

MyObject myObject; 
ListView myListView; 
MyAdapter myAdapter; 
ArrayList<MyListElement> myElements; 

Handler h = new Handler(){ 
    public void handleMessage (Message msg){ 
     if(msg.what == 0){ 
      init((ArrayList<MyListElement>)) 
     } 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
      setContentView(R.layout.my_layout); 
    myListView = (ListView) findViewById(R.id.my_listview); 

    myObject = (myObject) getIntent().getExtras().get("myObj"); 
    setTitle(getString(R.string.title_activity_chat) + myObject.getDisplayedName()); 

    myElements = new ArrayList<MyListElement>(); 
    LayoutInflater inflater = getLayoutInflater(); 
    myAdapter = new MyAdapter(this, this, R.layout.my_activity, myElements); 
    myListView.setEmptyView(findViewById(R.id.text1)); 
    myListView.setAdapter(myAdapter); 
    Intent i = new Intent(MyActivity.this, MyService.class); 
      ... 
    startService(i); 
} 

protected void init(List<MyListElement> pHistory) { 
    myAdapter.addAll(pHistory); 
    myAdapter.notifyDataSetChanged() 
} 
... 
} 

,我有一個自己的ArrayAdapter(MyAdapter)。

我的問題是,當我開始活動並在將數據返回到init(...)後調用服務時,UI會用黑色閃光刷新自己。

有人遇到過這個問題嗎?

+0

不讀你的代碼,檢查了這一點:http://stackoverflow.com/questions/2833057/background-listview-becomes-black-when滾動 – VM4

+0

這不是一個滾動問題,在init之後我可以用數據做所有事情,清除或添加+ n行,只是第一個(starter)事件會導致此行爲。 – kisstajmi

回答

0

我有這個代碼permanantly解決了這個問題:

myAdapter.add(first); 
myListView.post(new Runnable() { 
    @Override 
    public void run() { 
     while (myListView.getWidth() == 0) { 
      try { 
       Thread.sleep(10); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
     myAdapter.remove(first); 
    } 
});