2010-03-16 39 views
3

我在我的android活動中有一個ListView。我通過子類BaseAdaptor填充ListView(它在getView()方法中返回一個View)。如果我更改ListItem的內容,刷新ListView

如果在列表中的項目視圖按鈕我點擊收聽,我

  • 變化TextView的列表中的項目視圖中的文本 或
  • 改變列表項視圖的尺寸通過添加/刪除列表項視圖的子項

什麼是刷新我的listView有效嗎?我不希望listView重新觸發查詢,因爲沒有數據更改。

謝謝。

回答

5

如果你只是改變你的兒童視圖的內容,你沒有比TextView.setText(newText)更多的事情要做。

如果您改變的ListView兒童的數量,你必須調用BaseAdaptor.notifyDataSetChanged()

+0

我不'改變ListView的計數。我只是改變ListView項目1中ViewGroup的子項數。 – michael 2010-03-16 16:17:30

0

我正要建議你invalidate(),但你不想觸發重繪,所以我只能建議一些全球國旗的形式是你最好的選擇。設置標誌,無效或重繪和查詢(和重置)OnDraw中的標誌()

+1

我只是不想觸發重新查詢。但是當你說invalidate()時,你談到了無效()ListView()或列表項的視圖?此外,我不能在我的OnClickListener()中調用invalidate()。是不是Android防止在非UI線程中更新UI? – michael 2010-03-16 16:19:10