我目前在Android中製作SMS應用程序,以下是Inbox Listactivity的代碼片段,我已經從contentresolver請求一個遊標並使用自定義適配器將自定義視圖添加到列表中。未知ListView行爲
現在,在自定義視圖我有2個TextViews(tvFullBody,tvBody)... tvFullBody包含完整的SMS文本而tvBody包含一個簡短的預覽(35個字符) tvFullBody可視性默認設置爲GONE。
我的想法是,當一個列表項的用戶點擊,則tvBody應該dissappear(消失)和tvFullBody應該成爲可見的(可見)。再次單擊時,它應該恢復到其原始狀態。
//isExpanded is a BitSet of the size = no of list items...keeps track of which items are expanded and which are not
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
if(isExpanded.get(position))
{
v.findViewById(R.id.tvFullBody).setVisibility(View.GONE);
v.findViewById(R.id.tvBody).setVisibility(View.VISIBLE);
}else
{
v.findViewById(R.id.tvFullBody).setVisibility(View.VISIBLE);
v.findViewById(R.id.tvBody).setVisibility(View.GONE);
}
isExpanded.flip(position);
super.onListItemClick(l, v, position, id);
}
代碼工作,因爲它應該只是不希望sideeffect到:) .... 每10名(或左右)列表項目也被「切換」。 例如。如果我展開第一個,那麼第11,21個列表項目也會展開...雖然它們仍然不在屏幕上,但在滾動時您會看到不希望的「擴展」。我試過Listview跟蹤當前可見的10個列表項,滾動時,它「重用」那些相同的變量,這是造成這個問題......(我沒有檢查Android的源代碼呢。) 我會爲任何建議gratefull,我應該如何解決這個問題! :) 我打開替代方法,以及....在此先感謝! :)
這是棘手的,但我設法讓它工作:)謝謝指出我在正確的方向! – st0le 2010-06-17 13:23:30