这是我的形象:
如果我需要尝试任何事情,请建议我。
我的代码片段:
public class ShopFragment extends Fragment {
private int imgShop[] = {R.drawable.thumbnail_01,
R.drawable.thumbnail_02,
R.drawable.thumbnail_03,
R.drawable.thumbnail_04,
R.drawable.thumbnail_05,
R.drawable.thumbnail_06};
ViewPager pager;
SearchView searchView;
private int img[] = {R.drawable.scroll_view, R.drawable.scroll_view, R.drawable.scroll_view, R.drawable.scroll_view};
public ShopFragment() {
// Required empty public constructor
}
private ArrayList<Shop> prepareShop() {
ArrayList<Shop> shop = new ArrayList<>();
for (int i = 0; i < imgShop.length; i++) {
Shop shops = new Shop();
shops.setShop_img(imgShop[i]);
shop.add(shops);
}
return shop;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_shop, container, false);
pager = (ViewPager) view.findViewById(R.id.img_pager);
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getContext(), img);
pager.setAdapter(viewPagerAdapter);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.mRecyclerShop);
RecyclerView.LayoutManager layoutmanager = new GridLayoutManager(getContext(), 3);
recyclerView.setLayoutManager(layoutmanager);
ArrayList<Shop> shops = prepareShop();
ShopRecycleAdaptor adaptor = new ShopRecycleAdaptor(getContext(), shops);
recyclerView.setAdapter(adaptor);
return view;
}
我的适配器
public class ShopRecycleAdaptor extends RecyclerView.Adapter<ShopRecycleAdaptor.ViewHolder> {
private ArrayList<Shop> shop;
private Context context;
private int[] imgShop;
public ShopRecycleAdaptor(Context context, ArrayList<Shop> shop) {
this.shop = shop;
this.context = context;
}
@Override
public ShopRecycleAdaptor.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.model_shop, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ShopRecycleAdaptor.ViewHolder holder, int position) {
Picasso.with(context)
.load(shop.get(position)
.getShop_img())
.into(holder.imgShop);
holder.imgShop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), ShopType.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("shop", shop);
v.getContext().startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return shop.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView imgShop;
public ViewHolder(View view) {
super(view);
imgShop = (ImageView) view.findViewById(R.id.img_shop);
}
}
这是我的错误
05-13 11:45:54.091 8712-8712 / com.example.androiddev.army31 E / AndroidRuntime:FATAL EXCEPTION:main 处理:com.example.androiddev.army31,PID:8712 java.lang.RuntimeException:Parcel:无法编组值com.example.androiddev.army31.Shop@778fcae 在android.os.Parcel.writeValue(Parcel.java:1476) 在android.os.Parcel.writeList(Parcel.java:811) 在android.os.Parcel.writeValue(Parcel.java:1423) 在android.os.Parcel.writeArrayMapInternal(Parcel.java:723) 在android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1412) 在android.os.Bundle.writeToParcel(Bundle.java:1133) 在android.os.Parcel.writeBundle(Parcel.java:763) 在android.content.Intent.writeToParcel(Intent.java:8788) 在android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3071) 在android.app.Instrumentation.execStartActivity(Instrumentation.java:1539) 在android.app.Activity.startActivityForResult(Activity.java:4391) 在android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) 在android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) 在android.app.Activity.startActivityForResult(Activity.java:4335) 在android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) 在android.app.Activity.startActivity(Activity.java:4697) 在android.app.Activity.startActivity(Activity.java:4665) 在com.example.androiddev.army31.ShopRecycleAdaptor $ 1.onClick(ShopRecycleAdaptor.java:57) 在android.view.View.performClick(View.java:5646) 在android.view.View $ PerformClick.run(View.java:22458) 在android.os.Handler.handleCallback(Handler.java:761) 在android.os.Handler.dispatchMessage(Handler.java:98) 在android.os.Looper.loop(Looper.java:156) 在android.app.ActivityThread.main(ActivityThread.java:6524) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:941) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
答案 0 :(得分:0)
onClick
类Parcelable?要将任何自定义类放入Bundle,该类必须实现Parcelable接口。见这里。
https://developer.android.com/reference/android/os/Parcelable.html
您的堆栈跟踪错误表明正在添加的信息实际上不符合Parcelable,因此导致问题的intent.putExtra("shop", shop);
错误不是
{{1}}
如果我正确地读这个话就行了。