2017-05-13 2 views
-2

Das ist mein Bild ist:Wie onClick Bild mit gridlayout unterschiedlicher Aktivität

This my image

Wenn ich irgendetwas mit mir bitte versuchen muß beraten.

Mein Codefragment:

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; 
} 

mein Adapter

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); 
    } 

} 

und das ist mein Fehler

05-13 11: 45: 54,091 8712-8712/com.example. androiddev.army31 E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.beispiel.androiddev.army31, PID: 8712 java.lang.RuntimeException: Parcel: kann den Wert [email protected] bei android.os.Parcel.writeValue (Parcel.java:1476) bei android.os.Parcel.writeList (Parcel.java:811) bei android.os.Parcel.writeValue (Parcel.java:1423) bei android.os.Parcel.writeArrayMapInternal (Parcel.java:723) bei android.os.BaseBundle.writeToParcelInner (BaseBundle. java: 1412) bei android.os.Bundle.writeToParcel (Bundle.java:1133) bei android.os.Parcel.writeBundle (Parcel.java:763) bei android.content.Intent.writeToParcel (Intent.java: 8788) bei android.app.ActivityManagerProxy.startActivity (ActivityManagerNative.java:3071) bei android.app.Instrumentation.execStartActivity (Instrumentation.java:1539) bei android.app.Activity.startActivityForResult (Activity.java:4391) bei android.support.v4.app.BaseFragmentActivityJB.startActivityForResult (BaseFragmentActivityJB.java:50) bei android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:79) bei android.app.Activity.startActivityForResult (Aktivität. Java: 4335) bei android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:859) bei android.app.Ac ttivity.startActivity (Activity.java:4697) bei android.app.Activity.startActivity (Activity.java:4665) bei com.example.androiddev.army31.ShopRecycleAdaptor $ 1.onClick (ShopRecycleAdaptor.java:57) bei Android .view.View.performClick (View.java:5646) bei android.view.View $ PerformClick.run (View.java:22458) bei android.os.Handler.handleCallback (Handler.java:761) bei Android .os.Handler.dispatchMessage (Handler.java:98) bei android.os.Looper.loop (Looper.java:156) bei android.app.ActivityThread.main (ActivityThread.java:6524) bei java.lang .reflect.Met hod.invoke (Native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:941) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 831)

Antwort

0

Ist Shop Klasse Parcelable?Um eine benutzerdefinierte Klasse in ein Bundle zu platzieren, muss die Klasse die Parcelable-Schnittstelle implementieren. Siehe hier.

https://developer.android.com/reference/android/os/Parcelable.html

Ihr Stack-Trace Fehler deutet darauf hin, dass die Informationen hinzugefügt werden, ist in der Tat nicht Parcel konform, so ist es nicht der onClick Fehler, dass die Frage seiner den

intent.putExtra("shop", shop); 

Linie verursacht, wenn ich lese das richtig.

+0

Vielen Dank, gute Arbeit –

+0

@ C.Junior danke, wenn es funktioniert, bitte akzeptieren Sie dies als die Antwort! – Mercato