I create 2 classes(Meal
, Restaurant
) which extend ParseObject
, and create 2 custom adapters(BottomFragmentMealAdapter
, RestaurantAdapter
). I tried to do whatever I made in BottomFragmentMealAdapter
(it works) for RestaurantAdapter
. But it doesn't work.
Here is my log:
FATAL EXCEPTION: main Process: com.bogazici.menumizer, PID: 14739 java.lang.ClassCastException: com.parse.ParseObject cannot be cast to com.bogazici.menumizer.Restaurant at com.bogazici.menumizer.RestaurantAdapter.getItemView(RestaurantAdapter.java:17) at com.parse.ParseQueryAdapter.getView(ParseQueryAdapter.java:547) at android.widget.AbsListView.obtainView(AbsListView.java:2347) at android.widget.ListView.makeAndAddView(ListView.java:1864) at android.widget.ListView.fillDown(ListView.java:698) at android.widget.ListView.fillFromTop(ListView.java:759) at android.widget.ListView.layoutChildren(ListView.java:1659) at android.widget.AbsListView.onLayout(AbsListView.java:2151) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:581) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1034) at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:744) at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1180) at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:757) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15671) at android.view.ViewGroup.layout(ViewGroup.java:5038) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) 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(Zyg
Here is my RestaurantAdapter
public class RestaurantAdapter extends ParseQueryAdapter<Restaurant> {
//top line is 17
private AlphaAnimation buttonClick;
public RestaurantAdapter(Context context, final String filter_edit, final String filter_city, final String filter_region,0 final int filter_sort) {
super(context, new ParseQueryAdapter.QueryFactory<Restaurant>() {
public ParseQuery<Restaurant> create() {
// Here we can configure a ParseQuery to display
// only top-rated meals.
ParseQuery query = new ParseQuery("Restaurant");
query.whereContains("city", filter_city);
if(!filter_region.equals("*Hepsi*")&&!filter_region.equals("*All*"))
query.whereContains("region",filter_region);
if(filter_edit.equals("nothing")){
}else{
query.whereStartsWith("restaurant", filter_edit);
}
switch(filter_sort){
case 0:
query.orderByAscending("averagePrice");
break;
case 1:
query.orderByDescending("averagePrice");
break;
case 2:
query.orderByAscending("restaurant");
break;
case 3:
query.orderByDescending("averagePoint");
break;
default:
query.orderByAscending("restaurant");
break;
}
return query;
}
});
}
@Override
public View getItemView(Restaurant restaurant, View v, ViewGroup parent) {
//buttonClick = new AlphaAnimation(1F, 0.8F);
if (v == null) {
v = View.inflate(getContext(), R.layout.restaurant_list_item, null);
}
super.getItemView(restaurant, v, parent);
final String str_call = restaurant.getPhone();
TextView locationTextView = (TextView) v.findViewById(R.id.restaurant_location);
String str_location= restaurant.getRegion()+", "+restaurant.getCity();
locationTextView.setText(str_location);
TextView nameTextView = (TextView) v.findViewById(R.id.restaurant_name);
nameTextView.setText(restaurant.getName());
TextView pointTextView = (TextView) v.findViewById(R.id.restaurant_point);
String str_point = String.valueOf(restaurant.getAveragePoint());
pointTextView.setText(str_point);
TextView priceTextView = (TextView) v.findViewById(R.id.restaurant_averageprice);
String str_price = String.valueOf(restaurant.getAveragePrice())+" TL";
priceTextView.setText(str_price);
ImageView callImage = (ImageView) v.findViewById(R.id.restaurant_call);
callImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View w) {
// w.startAnimation(buttonClick);
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+str_call));
w.getContext().startActivity(intent);
}
});
TextView mapText = (TextView) v.findViewById(R.id.restaurant_map);
mapText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View w) {
//w.startAnimation(buttonClick);
}
});
return v;
}
}
you have to check two things
Ensure that your subclass has a public default
(i.e. zero-argument) constructor. You must not modify any ParseObject fields in this constructor.
and
Call ParseObject.registerSubclass(YourClass.class)
in your Application constructor before calling Parse.initialize()
.
Make sure you registered your parse class in your application
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With