我正在开发Android聊天应用程序。在我的聊天活动中,我使用了分页概念,意味着将向用户显示四条消息,就像Whats App一样,如果您有超过一百条消息,它会显示Load More
的选项。出于测试目的,我使用了四个消息的限制。这是快照。
如果我点击Load More Chat
它会显示前四条消息。这是其他快照。 Load More Chat
是listView的标题视图集。
现在假设从第一个屏幕截图中我选择了最后两个列表项,它们位于listView的第三和第四位置。像这样
现在我点击Load More Chat
选项,然后它会自动选择listItems,它们现在位于第三和第四位置,因为ArrayAdapter已经更新。这是图片。意味着它没有保留我之前选择的项目,因此我的应用程序中存在错误。
现在我很困惑如何解决问题。我试过了,但是徒劳无功。
这是我的listview代码。
listView.setMultiChoiceModeListener(this);
MultichoiceListener的Overriden方法如下。
@Override
public boolean onActionItemClicked(android.view.ActionMode arg0,
MenuItem arg1) {
return false;
}
@Override
public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.chat_activity_menu, menu);
return true;
}
@Override
public void onDestroyActionMode(android.view.ActionMode arg0) {
}
@Override
public boolean onPrepareActionMode(android.view.ActionMode arg0, Menu arg1) {
return false;
}
@Override
public void onItemCheckedStateChanged(android.view.ActionMode mode,
int position, long id, boolean selected) {
final int checkedCount = listView.getCheckedItemCount();
mode.setTitle(checkedCount + " Selected");
}
ArrayAdapter中的getView方法如下。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListView lv = (ListView) parent;
int headerCount = lv.getHeaderViewsCount();
Log.d("d", "header count "+headerCount);
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.activity_chat_singlemessage, parent, false);
}
containerLayout = (LinearLayout) row.findViewById(R.id.containerLayout);
messageContainer = (LinearLayout) row.findViewById(R.id.messageContainer);
ChatMessage chatMessageObj = getItem(position);
chatText = (TextView) row.findViewById(R.id.singleMessage);
timeOfChat = (TextView) row.findViewById(R.id.tvTimeOfMessage);
chatText.setText(chatMessageObj.message);
timeOfChat.setText(chatMessageObj.timeOfChat);
row.setId((int) chatMessageObj.messageID);
messageContainer.setBackgroundResource(chatMessageObj.left ? R.drawable.bubble_a : R.drawable.bubble_b);
containerLayout.setGravity(chatMessageObj.left ? Gravity.LEFT : Gravity.RIGHT);
return row;
}
任何帮助将不胜感激。 Plz的帮助。 谢谢!