2017-01-11 3 views
-1

Ich habe eine Reihe von Bildern, wenn vom Benutzer gedrückt wird, sollte eine neue Aktivität starten und einige Daten übergeben (ArrayList des benutzerdefinierten Objekts). ArrayList des benutzerdefinierten Objekts wird basierend auf Benutzereingaben initialisiert. Jetzt habe ich das Problem, dass, wenn der Benutzer noch keine Eingabe für ArrayList gegeben hat und auf eines von Image klickt, es zeigt, dass die Anwendung gestoppt wird. Ich habe versucht, es durch Versuch und Catch-Block zu behandeln, aber es funktioniert nicht. Der gesamte Ablauf funktioniert einwandfrei, wenn ArrayList nicht leer ist. Image to have look at App (on Top, series of images are there which gets populated basis user selection from a list and then user can click any image of them)Wie behandelt man null ArrayList beim Starten einer anderen Aktivität?

finden relevanten Codes unter:

Relevante Sperren von MainActivity:

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

      holder.imageView.setImageResource(horizontalList.get(position).imageId); 
      holder.txtview.setText(horizontalList.get(position).txt); 

      holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override 

       public void onClick(View v) { 


        String list = horizontalList.get(position).txt.toString(); 
        List<Coupon> couponList = new ArrayList<>(); 
        try { 
         for (Place place : allOffers) { 
          Coupon coupon = new Coupon(place.mPlace, place.mOffer, place.mImage, list); 
          couponList.add(coupon); 
         } 

         Toast.makeText(MainActivity.this, list, Toast.LENGTH_SHORT).show(); 
         Intent intentCat = new Intent(MainActivity.this, CategoryOffersActivity.class); 
         intentCat.putExtra("Category", (Serializable) couponList); 
         startActivity(intentCat); 

        } catch(Exception e) { 
         Toast.makeText(MainActivity.this,"List is Empty",Toast.LENGTH_SHORT).show(); 
         } 
       } 

      }); 

     } 

Neue Aktivitäten, die gestartet wird, wenn Bild vom Benutzer angeklickt wird:

public class CategoryOffersActivity extends AppCompatActivity implements PlaceAdapter.AdapterInterface,Serializable { 

    ListView catListView; 
    List<Place> catOffers = new ArrayList<Place>(); 
    PlaceAdapter catPlaceAdapter; 
    Place [] catPlaces; 
    List <Coupon> listCoupon=new ArrayList<Coupon>(); 
    TextView mHeader; 


    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_categoryoffers); 
     catListView = (ListView) findViewById(R.id.catListView); 
     mHeader=(TextView)findViewById(R.id.categoryName); 

     if (getIntent() != null) { 
      listCoupon = (ArrayList<Coupon>) getIntent().getSerializableExtra("Category"); 
      if (listCoupon != null) { 
       ArrayList<Place> placeList = new ArrayList<>(); 
       for(Coupon coupon : listCoupon) { 
        Place place=new Place(coupon.mPlace,coupon.mOffer,coupon.mImage); 
        placeList.add(place); 
       } 
       catPlaces=placeList.toArray(new Place[placeList.size()]); 
       mHeader.setText(listCoupon.get(0).mItemClicked+" Coupon History"); 
       catPlaceAdapter = new PlaceAdapter(CategoryOffersActivity.this, R.layout.row, catPlaces, this); 
       if (catListView != null) { 
        catListView.setAdapter(catPlaceAdapter); 
       } 

      } 
     } 


    } 





    @Override 
    public void buttonPressed() { 
     // some action 
    } 

} 
+0

if (arraylist.size()> 0) { // arraylist ist nicht leer } – Redman

+0

Das ist nicht klar, was ist die ArrayList, die null ist? Es gibt Instanzen, die in Ihrem Code nicht deklariert werden. Daher ist es schwer zu erkennen, was diese sind und wann Sie diese initialisieren. Das Erstellen eines [mcve] sollte Ihnen dabei helfen. Aber natürlich ist Ihre Frage einfach, überprüfen Sie einfach, ob die Instanz null ist oder initiieren Sie die Instanz in der create-Methode – AxelH

+0

@Redman es löste mein Problem. Nur neugierig, anstatt früher habe ich if (arraylist! = Null) warum es nicht funktioniert? –

Antwort

0
if ((listCoupon != null)&&(listCoupon.size()>0)) 

Überprüfen Sie auch für Array-Größe

+1

Ja, das hat funktioniert. Danke vielmals!! –

Verwandte Themen