baseAdapter
baseAdapter copied to clipboard
多种ItemViewType只支持2种?
多种ItemViewType只支持2种?3种及以上怎么操作?
添加不同的ItemDelegate就可以了的
@CuteHero 添加不同的ItemDelegate,然后在构造中添加进去。通过isForViewType来控制。
并不能,因为是根据isForViewType 来确定条目类型的
@wmhqnyh 怎么通过isForViewType()来控制?这个方法返回的是一个boolean类型的值, 这个方法的作用是什么?
@lpslpsl 能否给一个demo来说明
@mundane799699
比如下面代码。聊天的时候判断消息类型是否是IMAGE类型。其他的ItemDelegate同理。
@Override public boolean isForViewType(EMMessage item) { return item.getType() == EMMessage.Type.IMAGE&&mDirect== EMMessage.Direct.RECEIVE; }
@lpslpsl 能否给一个完整的project代码, 我能运行跑起来看效果的那种(麻烦你了)
@mundane799699 抱歉没有能完整的拿出来的项目。 如下代码片段应该够了。 mAdapter = new MultiItemTypeAdapter(this, mMessageList); mAdapter.addItemViewDelegate(new MessageTextSendDelagate(this)); mAdapter.addItemViewDelegate(new MessageTextRecDelagate(this)); mAdapter.addItemViewDelegate(new MessageIMGSendDelagate(this)); mAdapter.addItemViewDelegate(new MessageIMGRecDelagate(this)); mAdapter.addItemViewDelegate(new MessageVoiceRecDelagate(this)); mAdapter.addItemViewDelegate(new MessageVoiceSendDelagate(this)); mAdapter.addItemViewDelegate(new MessageLocationDelagate(this)); mMessagerecyclerview.setAdapter(mAdapter);
@Override
public boolean isForViewType(EMMessage item) {
return item.getType() == EMMessage.Type.TXT && mDirect == EMMessage.Direct.SEND;
}
@Override
public boolean isForViewType(EMMessage item) {
return item.getType() == EMMessage.Type.TXT && mDirect == EMMessage.Direct.RECEIVE;
}
@Override public boolean isForViewType(EMMessage item) { return item.getType() == EMMessage.Type.VOICE&&mDirect == EMMessage.Direct.RECEIVE; }
java.lang.IllegalArgumentException: No ItemViewDelegate added that matches position=3 in data source 这个是为什么,数据源有六条数据啊,不科学
@igding 你的第四条数据是不是没有对应的ItemViewDelegate