Autore Topic: getView  (Letto 1497 volte)

Offline Nigituma

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
getView
« il: 15 Ottobre 2013, 16:34:56 CEST »
0
Ciao ragazzi,
sono nuovo della programmazione Android e sto seguendo il libro Android 4 guida per lo sviluppatore di Massimo Carli.
Sono arrivato al punto in cui spiega gli Adapter ma non riesco a capire una cosa del metodo getView.
Non riesco a capire come fa il il metodo a ciclare sulla position che accetta come parametro dell'oggetto di cui deve restituire la view, la stessa position che poi si usa come parametro per il metodo getItem dell'oggetto

Spero di non aver sbagliato sezione

Grazie
« Ultima modifica: 15 Ottobre 2013, 22:53:56 CEST da Nigituma »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:getView
« Risposta #1 il: 15 Ottobre 2013, 17:55:13 CEST »
0
Se ho capito bene quale getView intendi, la risposta si trova direttamente nella documentazione del metodo.
Adapter | Android Developers

public abstract View getView (int position, View convertView, ViewGroup parent)
Get a View that displays the data at the specified position in the data set.


La getView non cicla da sola, qualcun altro cicla per lei e viene chiamata una volta per ogni posizione (quelle visibili ovviamente).

Era questa la domanda?


PS: era meglio View e Layout come sezione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nigituma

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:getView
« Risposta #2 il: 15 Ottobre 2013, 22:43:12 CEST »
0
Si avevo letto anche la documentazione, pero non riesco a capire da dove va a prendere la position, visto che seguendo l'esempio del libro non sono io programmatore a passargliela in alcun modo

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:getView
« Risposta #3 il: 16 Ottobre 2013, 08:37:07 CEST »
0
Si avevo letto anche la documentazione, pero non riesco a capire da dove va a prendere la position, visto che seguendo l'esempio del libro non sono io programmatore a passargliela in alcun modo

La getView non cicla da sola, qualcun altro cicla per lei e viene chiamata una volta per ogni posizione (quelle visibili ovviamente).

Se vuoi vedere chi chiama la getView e come, dovresti esplorare il codice sorgente di Android.  :-)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:getView
« Risposta #4 il: 16 Ottobre 2013, 09:33:28 CEST »
0

Offline Nigituma

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:getView
« Risposta #5 il: 16 Ottobre 2013, 16:31:02 CEST »
0
Quindi quello di position è un parametro che calcola da solo passandogli anche l'oggetto e quindi non ho bisogno di dirglielo io, giusto?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:getView
« Risposta #6 il: 16 Ottobre 2013, 16:38:37 CEST »
0
Quindi quello di position è un parametro che calcola da solo passandogli anche l'oggetto e quindi non ho bisogno di dirglielo io, giusto?

Avresti bisogno di dirglielo tu se fossi tu a chiamare quel metodo. Ma non sei tu a chiamare quel metodo, tu (al massimo) decidi cosa viene fatto dentro quel metodo e "position" lo ricevi come input.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nigituma

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:getView
« Risposta #7 il: 16 Ottobre 2013, 16:42:10 CEST »
0
si apposta dico, io chiamo solamente getView che tra gli altri prende anche position come parametro, che pero se lo prende da se come input

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:getView
« Risposta #8 il: 16 Ottobre 2013, 17:25:11 CEST »
0
si apposta dico, io chiamo solamente getView che tra gli altri prende anche position come parametro, che pero se lo prende da se come input

Forse stiamo parlando di cose diverse. Prendiamo un codice su cui ragionare, ad esempio quello in questo tutorial di utilizzo delle ListView : Android ListView - Tutorial

Ad un certo punto spiega come realizzare un CustomAdapter, al cui interno viene fatta una personalizzazione (override) di getView(), in cui tu scrivi come vuoi personalizzare la visualizzazione dei vari elementi della lista.

Codice (Java): [Seleziona]
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
  private final Context context;
  private final String[] values;

  public MySimpleArrayAdapter(Context context, String[] values) {
    super(context, R.layout.rowlayout, values);
    this.context = context;
    this.values = values;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    textView.setText(values[position]);
    // Change the icon for Windows and iPhone
    String s = values[position];
    if (s.startsWith("iPhone")) {
      imageView.setImageResource(R.drawable.no);
    } else {
      imageView.setImageResource(R.drawable.ok);
    }

    return rowView;
  }
}

Questo codice non prevede che sia il codice dell'utente a richiamare le getView. L'utente ridefinisce la getView() e lascia al framework il compito di usarla quando serve. E' quindi il framework a fornire i parametri della funzione, inclusa la position.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nigituma

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:getView
« Risposta #9 il: 17 Ottobre 2013, 00:09:15 CEST »
0
esatto, proprio quello che dicevo, il parametro position lo gestiscono automaticamente il framework e il metodo getview

Post unito: 17 Ottobre 2013, 10:45:18 CEST
Pero scusa una cosa, intanto grazie per la pazienza e scusami ma volevo capire, dal tutorial che mi hai mandato (e anche dal libro che sto leggendo) dove si capisce che è il framework a fornire i dati di cui ha bisogno il metodo getView in questo caso?
« Ultima modifica: 17 Ottobre 2013, 10:45:18 CEST da Nigituma, Reason: Merged DoublePost »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:getView
« Risposta #10 il: 17 Ottobre 2013, 11:10:04 CEST »
0
Pero scusa una cosa, intanto grazie per la pazienza e scusami ma volevo capire, dal tutorial che mi hai mandato (e anche dal libro che sto leggendo) dove si capisce che è il framework a fornire i dati di cui ha bisogno il metodo getView in questo caso?

A parte studiare come è fatto il framework, si intuisce indirettamente dal fatto che non sei tu a richiamare la getView().
E' un po' come la OnCreate(), la definisci ma non la richiami mai esplicitamente, lo fa il framework.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nigituma

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:getView
« Risposta #11 il: 18 Ottobre 2013, 15:52:47 CEST »
0
Grazie per la pazienza, scusami se ti ho fatto scocciare, pero volevo capire bene.
Conosci un buon sito dove posso andare a studiarmi il framework di android?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:getView
« Risposta #12 il: 18 Ottobre 2013, 17:32:13 CEST »
0
Grazie per la pazienza, scusami se ti ho fatto scocciare, pero volevo capire bene.
Conosci un buon sito dove posso andare a studiarmi il framework di android?

Nessun problema, è più che giusto voler capire.

Quanto a dove studiare sistematicamente il framework, secondo me il modo migliore è scegliersi di volta in volta un oggetto o un argomento e cominciare a cercare tutorial da provare. Prendi ad esempio le ListView, prova i tutorial che ci sono in giro, anche quelli più complessi che personalizzano in tutto e per tutto l'adapter.

E poi non fa mai male leggersi gli articoli di approfondimento sul sito ufficiale, sono una vera miniera d'oro di informazioni:
Design | Android Developers
Getting Started | Android Developers
App Components | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store