当我试图通过“循环for”进行迭代时会导致致命异常:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to br.com.gerticonsultoria.easyrentrider.model.ChatUser
at br.com.gerticonsultoria.easyrentrider.MapActivity$1.onReceive(MapActivity.java:272)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我有这些数据:
ArrayList<ChatUser> chatUser2 = intent.getParcelableArrayListExtra("chatUser");
chatUser2 = {ArrayList@6170} size = 2
0 = {LinkedTreeMap@6529} size = 14
0 = {LinkedTreeMap$Node@6533} "ConnectionId" -> "2500c795-3bad-4543-9905-2693807cc8ea"
key = "ConnectionId"
value = "2500c795-3bad-4543-9905-2693807cc8ea"
1 = {LinkedTreeMap$Node@6534} "UserGroup" -> "G"
key = "UserGroup"
value = "G"
2 = {LinkedTreeMap$Node@6535} "FgBusy" -> "S"
3 = {LinkedTreeMap$Node@6536} "UserType" -> "O"
4 = {LinkedTreeMap$Node@6537} "OperatorConnectionId" -> "null"
5 = {LinkedTreeMap$Node@6538} "OperatorID" -> "2.0"
6 = {LinkedTreeMap$Node@6539} "OperatorName" -> "null"
7 = {LinkedTreeMap$Node@6540} "OnlineUsers" -> "0.0"
8 = {LinkedTreeMap$Node@6541} "UserID" -> "2.0"
9 = {LinkedTreeMap$Node@6542} "UserName" -> "Douglas"
10 = {LinkedTreeMap$Node@6543} "CurrentDate" -> "2016-07-18T10:41:31.6714956-03:00"
11 = {LinkedTreeMap$Node@6544} "Latitude" -> "47.677928"
12 = {LinkedTreeMap$Node@6545} "Longitude" -> "-122.130293"
13 = {LinkedTreeMap$Node@6546} "VehicleId" -> "17.0"
1 = {LinkedTreeMap@6530} size = 14
0 = {LinkedTreeMap$Node@6606} "ConnectionId" -> "9d5fa748-0870-419c-82b3-0a2c2654839e"
1 = {LinkedTreeMap$Node@6607} "UserGroup" -> "G"
2 = {LinkedTreeMap$Node@6608} "FgBusy" -> "S"
3 = {LinkedTreeMap$Node@6609} "UserType" -> "O"
4 = {LinkedTreeMap$Node@6610} "OperatorConnectionId" -> "null"
5 = {LinkedTreeMap$Node@6611} "OperatorID" -> "1.0"
6 = {LinkedTreeMap$Node@6612} "OperatorName" -> "null"
7 = {LinkedTreeMap$Node@6613} "OnlineUsers" -> "0.0"
8 = {LinkedTreeMap$Node@6614} "UserID" -> "1.0"
9 = {LinkedTreeMap$Node@6615} "UserName" -> "Wilian"
10 = {LinkedTreeMap$Node@6616} "CurrentDate" -> "2016-07-18T10:41:37.1728196-03:00"
11 = {LinkedTreeMap$Node@6617} "Latitude" -> "47.678694"
12 = {LinkedTreeMap$Node@6618} "Longitude" -> "-122.130529"
13 = {LinkedTreeMap$Node@6619} "VehicleId" -> "16.0"
我试图以这种方式迭代:
for (int i = 0; i < chatUser2.size(); i++) {
Log.i("script", "Coords : " + chatUser2.get(i).Latitude + " " + chatUser2.get(i).Longitude);
}
我尝试过其他方法,尝试过gson,迭代器等,但我无法解决。任何人都可以帮助我??
提前致谢。
答案 0 :(得分:0)
我解决了实现Parcelable并改变迭代的问题:
for (int i = 0; i < chatUserConnect.size(); i++) {
listMapItem.add(new MapItem(chatUserConnect.get(i).getLatitude(), chatUserConnect.get(i).getLongitude(),"" ,
chatUserConnect.get(i).getUserID(), chatUserConnect.get(i).getVehicleId()));
}
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.annotations.SerializedName;
public class ChatUserConnect implements Parcelable
{
@SerializedName("UserType")
public String UserType;
@SerializedName("UserID")
public long UserID;
@SerializedName("Latitude")
public double Latitude;
@SerializedName("Longitude")
public double Longitude;
@SerializedName("VehicleId")
public long VehicleId;
public ChatUserConnect( String UserType, long UserID, double Latitude, double Longitude, long VehicleId ) {
this.UserType = UserType;
this.UserID = UserID;
this.Latitude = Latitude;
this.Longitude = Longitude;
this.VehicleId = VehicleId;
}
public long getVehicleId() {
return VehicleId;
}
public void setVehicleId(long VehicleId) {
this.VehicleId = VehicleId;
}
public String getUserType() {
return UserType;
}
public void setUserID(String UserType) {
this.UserType = UserType;
}
public long getUserID() {
return UserID;
}
public void setUserID(long UserID) {
this.UserID = UserID;
}
public double getLongitude() {
return Longitude;
}
public void setLongitude(double Longitude) {
this.Longitude = Longitude;
}
public double getLatitude() {
return Latitude;
}
public void setLatitude(double Latitude) {
this.Latitude = Latitude;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(UserType);
dest.writeLong(UserID);
dest.writeDouble(Latitude);
dest.writeDouble(Longitude);
dest.writeLong(VehicleId);
}
protected ChatUserConnect(Parcel in) {
UserType = in.readString();
UserID = in.readLong();
Latitude = in.readDouble();
Longitude = in.readDouble();
VehicleId = in.readLong();
}
public static final Creator<ChatUserConnect> CREATOR = new Creator<ChatUserConnect>() {
@Override
public ChatUserConnect createFromParcel(Parcel in) {
return new ChatUserConnect(in);
}
@Override
public ChatUserConnect[] newArray(int size) {
return new ChatUserConnect[size];
}
};
}