1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

GridView & getView Aufruf

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von padde83, 04.08.2010.

  1. padde83, 04.08.2010 #1
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Hallo zusammen,

    ich hatte gestern ein ähnliches Problem mit der Listview, nach längerem rumtesten konnte ich es lösen.:)
    Da ich einen ViewFlipper verwende der zwischen ListView und GridView hin und her wechselt, muss ich mich nun auch um die GridView kümmern.:rolleyes:

    Aktuell bekomme ich folgenden Ausgabe in der Konsole in der Listendarstellung
    Code:
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/ListAdapter( 4287): getView Aufruf fuer Position[0]
    D/ListAdapter( 4287): getView Aufruf fuer Position[1]
    D/ListAdapter( 4287): getView Aufruf fuer Position[2]
    D/ListAdapter( 4287): getView Aufruf fuer Position[3]
    D/ListAdapter( 4287): getView Aufruf fuer Position[4]
    D/ListAdapter( 4287): getView Aufruf fuer Position[5]
    D/dalvikvm( 4287): GC freed 2108 objects / 116264 bytes in 80ms
    D/dalvikvm( 4287): GC freed 510 objects / 246224 bytes in 70ms
    D/dalvikvm( 4287): GC freed 520 objects / 210336 bytes in 66ms
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/dalvikvm( 4287): GC freed 1450 objects / 172048 bytes in 51ms
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    
    Und schließlich beim Wechsel auf die GridView:
    Code:
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[1]
    D/GridAdapter( 4287): Aufruf getView fuer Position[2]
    D/GridAdapter( 4287): Aufruf getView fuer Position[3]
    D/GridAdapter( 4287): Aufruf getView fuer Position[4]
    D/GridAdapter( 4287): Aufruf getView fuer Position[5]
    D/GridAdapter( 4287): Aufruf getView fuer Position[6]
    D/GridAdapter( 4287): Aufruf getView fuer Position[7]
    D/GridAdapter( 4287): Aufruf getView fuer Position[8]
    D/GridAdapter( 4287): Aufruf getView fuer Position[9]
    D/GridAdapter( 4287): Aufruf getView fuer Position[10]
    D/GridAdapter( 4287): Aufruf getView fuer Position[11]
    D/GridAdapter( 4287): Aufruf getView fuer Position[12]
    D/GridAdapter( 4287): Aufruf getView fuer Position[13]
    D/GridAdapter( 4287): Aufruf getView fuer Position[14]
    D/GridAdapter( 4287): Aufruf getView fuer Position[15]
    D/GridAdapter( 4287): Aufruf getView fuer Position[16]
    D/GridAdapter( 4287): Aufruf getView fuer Position[17]
    D/GridAdapter( 4287): Aufruf getView fuer Position[18]
    D/GridAdapter( 4287): Aufruf getView fuer Position[19]
    W/InputManagerService( 2100): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43c9d170
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/dalvikvm( 4287): GC freed 2692 objects / 789584 bytes in 61ms
    D/dalvikvm( 4287): GC freed 527 objects / 27944 bytes in 64ms
    D/dalvikvm( 4287): GC freed 562 objects / 577768 bytes in 68ms
    D/dalvikvm( 4287): GC freed 125 objects / 5368 bytes in 85ms
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/dalvikvm( 4287): GC freed 2607 objects / 232624 bytes in 85ms
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    D/GridAdapter( 4287): Aufruf getView fuer Position[0]
    
    Zu erkennen ist das der Aufruf in dem GridAdapter von getView zuoft auf die ErstePosition stattfindet, was bei mir wiedereinmal zu einer "RejectedExecutionException" führt. :eek:

    Woran kann das Liegen?

    Gruß & Danke
    padde83
     
  2. padde83, 04.08.2010 #2
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Hier einmal mein GridLayout:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <GridView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/grid:layout" android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:padding="10dp"
            android:verticalSpacing="10dp" android:horizontalSpacing="10dp"
            android:numColumns="auto_fit" android:columnWidth="60dp"
            android:stretchMode="columnWidth" android:gravity="center" />
    </LinearLayout>
    
    Und der dazugehörige Adapter:
    Code:
    public class GridAdapter extends ArrayAdapter<Item>
    {
        private Context context;
    
        public static boolean mBusy = false;
    
        public GridAdapter(Context context, int textViewResourceId, List<Item> objects)
        {
            super(context, textViewResourceId, objects);
            this.context = context;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
    
                Log.d("GridAdapter", "Aufruf getView fuer Position[" + position + "]");
            final Item item = getItem(position);
    
            ImageView imageView;
            if (convertView == null)
            {
                imageView = new ImageView(context);
                imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
                imageView.setAdjustViewBounds(false);
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(4, 4, 4, 4);
                imageView.setImageResource(R.drawable.loading);
            }
            else
            {
                imageView = (ImageView) convertView;
            }
            if (!mBusy)
            {
                try
                {
                    //start AsyncTask
                }
                catch (RejectedExecutionException e)
                {
                    ...
                }
            }
            else
            {
                imageView.setImageResource(R.drawable.loading);
            }
            return imageView;
        }
    }
    
     
  3. padde83, 05.08.2010 #3
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Niemand eine Idee?
    Zu wenig Informationen zuviel? :)

    padde83
     
  4. padde83, 05.08.2010 #4
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Ok also habe mal den eigens implementierten OnScrollListener vom GridView entfernt
    und siehe da es gibt keine "RejectedExecutionException".

    Aber getView wird immernoch mehrmals für die selbe Position aufgerufen :(
     

Diese Seite empfehlen