Android listview 内容布局随着键盘的出现消失,发生改变

时间:2022-08-02 00:33:15

需求:如果消息的时间和上一条消息的时间差不多,就隐藏这条消息的时间。

问题:键盘出现和键盘消失,页面上的消息对应的时间会错乱,发生改变。

原因:是我自己逻辑代码写的有问题,一开始定义了一个全局变量存放上一条消息的时间,这样做就出现了问题,经过测试,发现,键盘出现,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);
}
}


Android  listview 内容布局随着键盘的出现消失,发生改变