Autore Topic: GridView Elementi Duplicati  (Letto 428 volte)

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
GridView Elementi Duplicati
« il: 11 Aprile 2013, 21:19:01 CEST »
0
Ho un problema nella gestione di una gridview che mostra dei TextView con un immagine di sfondo.
Durante lo scorrimento degli elementi succede una cosa strana, alcuni elementi si duplicano, mentre altri non vengono proprio visualizzati.
Ad esempio io ho 9 elementi appena apro l'activity nella gridView vedo:
0|1|2
3|4|5
quando scorro per vedere gli altri succede questo:
3|4|5
0|6|0
3|
Non capisco come mai, come posso risolvere?

Adapter
Codice (Java): [Seleziona]
public class DashBoardManager extends ArrayAdapter<DashBoardItem>
{
        private Context context;
        private DashBoardItem[] item;

        public DashBoardManager(Context context, int textViewResourceId,DashBoardItem[] objects)
        {
                super(context, textViewResourceId, objects);
                this.context = context;
                item = objects;
        }
               
        public View getView(int position, View convertView, ViewGroup parent)
        {
                TextView titleTextView;
                if (convertView == null)
                {
                        LayoutInflater inflater = LayoutInflater.from(context);
                        View View_item = inflater.inflate(R.layout.dashboard_inflate, parent,false);
                        titleTextView = (TextView) View_item.findViewById(R.id.TitleView);
                        titleTextView.setText(Integer.toString(position));
                        titleTextView.setCompoundDrawablesWithIntrinsicBounds(0,item[position].getIconInformation(), 0, 0);
                        convertView = titleTextView;
                }
                else
                {
                        titleTextView = (TextView) convertView;
                }
                titleTextView.setTextColor(Color.WHITE);
                return titleTextView;
        }

        public int getCount()
        {
                return item.length;
        }

        public long getItemId(int position)
        {
                return 0;
        }
}

Main:
Codice (Java): [Seleziona]
GV=(GridView)findViewById(R.id.DashBoardGridView);
                GV.setOnItemClickListener(this);
                GV.setAdapter(new DashBoardManager(CatW.this,R.layout.dashview,DashItem));

gridView:
Codice (Java): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_repeater" >
   
   <GridView
       android:id="@+id/DashBoardGridView"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center_vertical|center_horizontal"
       android:numColumns="auto_fit"
       android:stretchMode="columnWidth"
       android:verticalSpacing="20dp" >

    </GridView>

</LinearLayout>


Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:GridView Elementi Duplicati
« Risposta #1 il: 12 Aprile 2013, 12:07:19 CEST »
0
Stai usando in modo scorretto la convertView.
Se è diversa da null giustamente non ricarichi il layout, ma devi comunque rivalorizzare tutti i componenti coi dati dipendenti dalla posizione