2013-08-02 12 views
6
  • Ho sempre avuto un'ambiguità sul motivo per cui abbiamo bisogno di usare il gonfiatore in Android, perché vengono utilizzati in ListView per i layout personalizzati (come di seguito)?
  • Che cos'è un gonfiatore?
  • Qual è il vantaggio dell'utilizzo di Inflater?

public class MobileArrayAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] values; 


public MobileArrayAdapter(Context context, String[] values) { 
    super(context, R.layout.list_mobile, 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.list_mobile, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); 
    textView.setText(values[position]); 

Grazie,Perché utilizzare Inflater in listview

risposta

13

Che cos'è un Inflater?

In sintesi ciò che il LayoutInflater Documentation dice ... A LayoutInflater è uno dei servizi di sistema Android che è incaricato di prendere i file XML che definiscono un layout, e convertirli in View oggetti. Il sistema operativo utilizza quindi questi oggetti vista per disegnare lo schermo.

Ho sempre avuto l'ambiguità sul perché abbiamo bisogno di usare gonfiatore in Android, perché vengono utilizzate in ListView Android per un layout personalizzato?

In genere, non è mai necessario utilizzare direttamente un LayoutInflater. Android fa la maggior parte dell'inflazione del layout per te quando chiami lo setContentView() nel metodo onCreate() della tua attività.Quindi, come programmatore, sei responsabile di assicurarti che le viste siano gonfiate. Ora vuoi aumentare le visualizzazioni nel contesto di un ListView. La classe Adapter può inflazionare per te se non desideri personalizzare ciascun elemento. Ma se si desidera personalizzare le visualizzazioni mostrate in un elenco, sarà necessario gonfiare manualmente ciascuna vista con il LayoutInflater, poiché non esiste un altro metodo esistente che è possibile utilizzare.

Qual è il vantaggio dell'utilizzo di Inflater?

Non c'è alcun vantaggio nell'utilizzarlo. È necessario utilizzare un LayoutInflater in qualche forma o forma per gonfiare i layout XML statici.

In alternativa, è possibile creare viste dinamicamente con codice java. Tuttavia, è necessario chiamare i metodi per impostare manualmente ciascuna proprietà per la vista. A mio parere, è più facile usare il processo di XML/inflazione. Inoltre, Android pre-elabora i tuoi file XML in fase di compilazione, quindi ciò comporta tempi di esecuzione più rapidi.

+0

"Non vi è alcun vantaggio. Vi è richiesto di gonfiare le vostre visualizzazioni in qualche modo" tale affermazione è ovviamente errata, è sempre possibile creare viste nel codice –

+0

Consentitemi di chiarire .. vedi modifica. – Joel

+0

La domanda "Qual è il vantaggio dell'uso di Inflater?" mi traduce in "Qual è il vantaggio dell'uso di Inflater rispetto alla creazione di viste nel codice?". La tua risposta "Non c'è alcun vantaggio nell'usarlo [...]" sarebbe sbagliata se rispondesse alla domanda "espansa". –

3

Ho sempre avuto l'ambiguità sul motivo per cui necessità di usare wee gonfiatore in Android, perché essi sono utilizzati in ListView Android per un layout personalizzato?
Vengono utilizzati per creare le viste per ogni riga.

Che cos'è un gonfiatore?
Un servizio di sistema che crea una vista da un layout XML.

Nel codice seguente sto cercando di capire perché viene utilizzato Inflator?
Il gonfiatore viene utilizzato per creare le viste per le righe.

Qual è il vantaggio dell'utilizzo di Inflater?
Rispetto a cosa? Come si desidera creare le viste dal layout XML?

+0

Quindi la creazione di viste per le righe per un Listview è possibile solo utilizzando Inflator? –

+1

O con un inflater da un layout XML, o programmaticamente con 'new View()'. Nella maggior parte dei casi, probabilmente si desidera utilizzare un layout XML. – SimonSays

0

In parole semplici, un inflattore consente di creare una vista da un file di layout delle risorse in modo che non sia necessario creare tutto a livello di programmazione.

Nell'esempio, si gonfia il layout R.layout.list_mobile. Questo ti consente di accedere a tutte le viste al suo interno. Ad esempio, è quindi chiamare:

TextView textView = (TextView) rowView.findViewById(R.id.label); 

Chiamando rowView.findViewById() siete in grado di accedere a una vista che sono stati creati all'interno di quel layout. Spesso per ListViews è disponibile un file XML di riga che viene successivamente generato e inserito nei dati.

Problemi correlati