我只需检查此SO链接,即可在适配器顶部添加一个对象。
以下是我发现在适配器顶部添加对象的代码:
yourAdapter.insert(object, 0);
但在我的情况下,对象的数据类型与适配器的数据类型不同。所以我收到了以下错误:
错误的第一个参数类型。需要.......
所以我决定投射对象,然后尝试插入:
adapter.insert((OneOnOneMessage)messageList, 0);
但我没有运气并且开始遇到以下运行时错误:
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.mics.models.OneOnOneMessage
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at com.mics.activities.SingleChatActivity$2.onClick(SingleChatActivity.java:283)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at android.view.View.performClick(View.java:4448)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at android.view.View$PerformClick.run(View.java:18461)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at android.os.Handler.handleCallback(Handler.java:733)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at android.os.Looper.loop(Looper.java:136)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5072)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
03-08 14:55:43.933 6358-6358/com.dayoptions.chat W/System.err: at dalvik.system.NativeStart.main(Native Method)
我可以使用以下代码将对象添加到适配器中:
adapter.addAll(messageList);
使用上面一行我没有收到有关'wrong argument type'
或'casting'
的任何问题,但我想在列表视图的顶部添加该对象。
答案 0 :(得分:1)
问题在于您无法将列表(messageList)强制转换为 OneOnOneMessage 类型的对象。
您可以从列表中投射单个项目,如下所示:
adapter.insert((OneOnOneMessage)messageList.get(index), 0);
答案 1 :(得分:0)
这是我的解决方案:
创建新的List并将新消息提取到此:
messageListLoad = OneOnOneMessage.loadEarlierMessages(sessionData.getId(), buddyId, messageList.get(0).getId(), LOAD_EARLIER_COUNT);
使用以下代码将新创建的列表加载到上一个列表中:
for (int i = messageListLoad.size() - 1; i >= 0; i--) {
messageList.add(0, messageListLoad.get(i));
}
最后告诉适配器我们在列表中有一些新值:
adapter.notifyDataSetChanged()