1. 程式人生 > >Android listview 內容佈局隨著鍵盤的出現消失,發生改變

Android listview 內容佈局隨著鍵盤的出現消失,發生改變

需求:如果訊息的時間和上一條訊息的時間差不多,就隱藏這條訊息的時間。

問題:鍵盤出現和鍵盤消失,頁面上的訊息對應的時間會錯亂,發生改變。

原因:是我自己邏輯程式碼寫的有問題,一開始定義了一個全域性變數存放上一條訊息的時間,這樣做就出現了問題,經過測試,發現,鍵盤出現,listview的高度發生改變,出現滾動條,此時adpater的getView()position順序是:先0,1,2,3,再3,2,1,0。所以定義全域性變數是行不通的,倒序的時候正好反過來了。其實可以簡單點,是我複雜化了。直接獲取position的資料,和position-1的資料。。這樣就無所謂順序和倒序了。就像絕對和相對的關係。。。

程式碼:

	// 判斷時間,如果兩條訊息的時間相近,則第二條訊息的時間隱藏
		if (position == 0) { // 預設第0個顯示時間,
			viewHodler.txt_sendTime.setVisibility(View.VISIBLE);
			viewHodler.txt_sendTime.setText(msg.getSendTime());
		} else { // 大於0 的,比如3得和2比較,如果時間相同,就隱藏
			MessageEntity msg0 = getItem(position - 1);
			if (!msg.getSendTime().equals(msg0.getSendTime())) {
				viewHodler.txt_sendTime.setVisibility(View.VISIBLE);
				viewHodler.txt_sendTime.setText(msg.getSendTime());
			} else {
				viewHodler.txt_sendTime.setVisibility(View.GONE);
			}
		}