ClassCastException can not convert long to Object class

Multi tool use
Multi tool use


ClassCastException can not convert long to Object class



I am facing a weird problem. I parsed an arraylist from a previous class successfully but while retrieving it in this other class, it throws a exception.
Here is my class:


public class OrderDetailsActivity extends AppCompatActivity {

private Context mContext;
private RecyclerView recyclerView;
private final ThreadLocal<Order> order = new ThreadLocal<Order>();
private Itemitems;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_details);

if (getIntent() != null) {
order.set((Order) getIntent().getSerializableExtra(MainActivity.STRING_IMAGE_OBJECT));
}

mContext=OrderDetailsActivity.this;
recyclerView= findViewById(R.id.recycler_view);

RecyclerView.LayoutManager recylerViewLayoutManager = new LinearLayoutManager(mContext);
recyclerView.setLayoutManager(recylerViewLayoutManager);
recyclerView.setAdapter(new OrderDetailsAdapter());

}
public class OrderDetailsAdapter extends RecyclerView.Adapter<OrderDetailsHolder>{
Intent intent = getIntent();
Bundle args = intent.getBundleExtra("BUNDLE");
HashMap<String, Item> map=(HashMap<String, Item>) args.getSerializable("ARRAYLIST");
Collection<Item> values = map.values();
ArrayList<Item>items=new ArrayList<Item>(values);
@NonNull
@Override
public OrderDetailsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.order_item, parent, false);
return new OrderDetailsHolder(layoutView, items);
}

@Override
public void onBindViewHolder(@NonNull OrderDetailsHolder holder, int position) {
Double price = items.get(position).getmPrice();//Error is thrown here
String p = String.valueOf(price);
holder.itemPrice.setText(p);
holder.itemName.setText(items.get(position).getmName());

}

@Override
public int getItemCount() {


return items.size();
}
}



}



It throws this exception in the console:


java.lang.ClassCastException: java.lang.Long cannot be cast to com.leet.wabomba.nairobae.Item
at com.leet.wabomba.nairobae.OrderDetailsActivity$OrderDetailsAdapter.onBindViewHolder(OrderDetailsActivity.java:62)
at com.leet.wabomba.nairobae.OrderDetailsActivity$OrderDetailsAdapter.onBindViewHolder(OrderDetailsActivity.java:47)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6714)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5647)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3529)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1080)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:758)
at android.view.View.layout(View.java:19586)
at android.view.ViewGroup.layout(ViewGroup.java:6053)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2484)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2200)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)



The previous class:


public class OrdersAdapter extends RecyclerView.Adapter<OrderViewHolder>{

ArrayList<Order> orders=new ArrayList<Order>();
ArrayList<ArrayList> items=new ArrayList<ArrayList>();
private ArrayList<Item> item;

public OrdersAdapter(DatabaseReference dr){
dr.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
orders.clear();
items.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Order menu = postSnapshot.getValue(Order.class);
orders.add(menu);
item = (ArrayList<Item>) postSnapshot.child("needs").getValue();
items.add((ArrayList) item);
}
notifyDataSetChanged();
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
@Override
public OrderViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.orders, parent, false);
return new OrderViewHolder(layoutView, orders);
}

@Override
public void onBindViewHolder(final OrderViewHolder holder, final int position) {

holder.location.setText(orders.get(position).getLocation());
holder.description.setText(orders.get(position).getDescription());
holder.name.setText(orders.get(position).getName());
holder.phone.setText(orders.get(position).getPhone());
holder.cleared.setVisibility(View.INVISIBLE);
holder.called.setVisibility(View.INVISIBLE);
holder.mLayoutItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent intent = new Intent(MainActivity.getContext(), OrderDetailsActivity.class);
Bundle args = new Bundle();
args.putSerializable("ARRAYLIST",(Serializable)item.get(position));
intent.putExtra("BUNDLE",args);
MainActivity.getContext().startActivity(intent);

}
});

holder.delivered.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.delivered.setImageResource(R.drawable.deliveredicon);
holder.cleared.setVisibility(View.VISIBLE);
notifyDataSetChanged();

}
});
holder.call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

holder.called.setVisibility(View.VISIBLE);
}
});



Pretty much what happens is, when i click on a cardview, I want to get the arraylists associated with that position and cast them to a different cardview & class.
}


@Override
public int getItemCount() {
return orders.size();
}



}



I having a hard time pinpointing the problem. Please help.





You have received an object of the class Long and you are trying to assign (cast) it to an Item. From the quick scan I suspect that the values of your map are not of Item but of Long.
– M. le Rutte
Jul 2 at 18:52



Long


Item


Item


Long





Am a bit new to android could you please highlight it in code
– Leet
Jul 2 at 18:54





at com.leet.wabomba.nairobae.OrderDetailsActivity$OrderDetailsAdapter.onBindViewHolder(OrderDetailsActivity.java:62)
– M. le Rutte
Jul 2 at 18:55



at com.leet.wabomba.nairobae.OrderDetailsActivity$OrderDetailsAdapter.onBindViewHolder(OrderDetailsActivity.java:62)





@Leet At the end of each line of the exception stack trace you can see file names and line numbers. Find the files that you've written (I assume OrderDetailsActivity.java) and look at the lines specified by the exception. This will help you pinpoint which line the exception is coming from.
– Michael
Jul 2 at 18:58






Sure. Thanks a bunch👊🏾
– Leet
Jul 3 at 4:56









By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

1h,RaZPQGGkfdrphltqwLtAAF2bbCovQJjk32G tRex5ntu4B SdIH1Y24,r2X TAw5P0f RKBzJMFhAk h0RRz2RjIOlvygnJ9s96ZvX
Y,qDvU BV XRan,rRmb FI2B4 5toDu02gqhFk 2S4T,8LmhdYDcyrqoIAZ73qCEOOi2fVBYDPC1uUpocfeOL58mqk0Eq

Popular posts from this blog

PHP contact form sending but not receiving emails

Do graphics cards have individual ID by which single devices can be distinguished?

Create weekly swift ios local notifications