我在我的ListActivity
中有一個ListView
,它用適配器充氣。有一個Handler
和我呼籲它的postDelayed()
方法運行遞歸ListView
(在notifyDataSetChanged()
的幫助下)。 postDealyed()
設置爲1秒。在列表視圖中更改「listitem」引用
現在,有ContextMenus
這ListView
的所有項目/行。
我想從它的ContextMenu
使用此代碼(剛剛接到「longpressed」行/項目的位置)單獨設置一個行的/項的背景:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
...
case R.id.highlight:
ListView lv = (ListView)getListView();
View row = (View) lv.getChildAt(info.position);
row.setBackgroundColor(Color.argb(255, 22, 100, 100));
return true;
...
當我運行應用程序選定行的背景會發生變化(因爲它應該),但是每隔一秒(因此在每次刷新ListView
時)其中的另一行會發生變化,並且所選行會變回其原始狀態。又過了一秒,一切都改變了。如果我滑過ListView
的行,其他行也會閃爍。就像參考文獻正在改變或者我真的不知道。如果我停止滑動閃光背景有一個模式,直到下一張幻燈片,當它獲得另一種模式。
任何想法? 在此先感謝!
嗯,我認爲它會解決問題,但我已經編輯了代碼,正如你所建議的那樣,問題依然存在。現在適配器檢查行是否需要另一個背景。如果它需要適配器用setBackgroundColor覆蓋背景。如果我滑動ListView同樣華麗的事情仍然存在。 – IBoS 2011-06-16 11:21:46
但是,如果我覆蓋背景不只是爲了需要突出顯示的行,而是爲適配器中的所有行(例如對於其他人爲黑色),它將工作,但是然後我鬆開了行的原始onlongpress視覺行爲。我知道我可以將它們更改爲與之前相同,但如果我不必設置其他行的背景,則會更好。 – IBoS 2011-06-16 11:22:29
無論如何,我把代碼移動到了適配器,並且不僅設置了一個convertViews,而且還設置了其他背景/選擇器等。取決於是否需要突出顯示。 – IBoS 2011-06-16 17:49:54