0
我有一個ListView
從數據庫填充使用自定義ResourceCursorAdapter
與bindView
格式化每個列表項目。這些項目按照時間順序顯示,我需要突出第一個未來事件。不幸的是,我只知道這是我處理下一個條目並發現它是過去的第一個未來事件。我真正需要的是在bindView處理中「向前看」的能力,但這不在那裏。更改顯示的ListView中的項目的背景
唯一的選擇(我能想到的)是處理所有項目,然後回去改變第一個未來事件的背景(然後我會知道)。
我正在使用的代碼是
EventsAdapter db = new EventsAdapter(this);
db.open();
Cursor cursor = db.fetchAllRecords();
final MyAdapter listitems = new MyAdapter(this,R.layout.timeline_detail, cursor, 0);
timeline.setAdapter(listitems);
db.close();
View v = timeline.getChildAt(firstEvent); // firstevent is set in the bindView
v.setBackgroundColor(Color.parseColor("#ffd1d1"));
但是視圖V始終爲空,當我在查看聲明斷點運行在調試模式下,列表視圖還沒有呈現在屏幕。因此,我假設這就是爲什麼視圖仍然爲空。
我怎樣才能得到changeView
ListView
項目需要在ListView
第一次顯示時更改?
謝謝,但這只是部分工作。我有一個光標,其中有14條記錄,其中8條在任何時候都顯示在屏幕上。當我第一次運行應用程序時,正確的記錄被突出顯示(這正是我在getView中所做的),但是當我上下滾動突出顯示的項目時,突然顯示的內容有時最多會變爲4個。 –
因此突出顯示的視圖得到回收?這是我所理解的。在這種情況下,你只需要把一個'else {}'放在那個'if'中,併爲其餘的項目設置正常的背景。 –
非常感謝。添加其他的東西可以解決問題。爲了我的啓發,你能解釋一下bindview和getview之間的關係嗎?對於通過光標位置的每一行,bindview是否調用getview作爲位置? –