Domanda

Ho un'app Android che pone una domanda seguita da x Numero di opzioni. Ogni opzione contiene un file textview, ImageView e a radio button.

Il valore di x (cioè il numero di opzioni) non è costante. Voglio aggiungere dinamicamente il contenuto dell'interfaccia utente per soddisfare questo requisito.

Al momento ho scritto il codice nell'XML del layout per visualizzare un massimo di 4 opzioni. Se il numero di opzioni è 2, nascondo le opzioni 3 e 4 usando qualcosa di simile

tvoption1.setVisibility(View.GONE);
tvoption2.setVisibility(View.GONE);

Tuttavia questo non è molto scalabile. Qualcuno può dirmi come aggiungere opzioni per Java dinamicamente. O esiste un approccio migliore?

È stato utile?

Soluzione

UN View può essere aggiunto in fase di esecuzione usando il gonfiatore in questo modo:

LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.news_categories_item, null);

TextView categoryValueTextView = (TextView)linearLayout.findViewById(R.id.news_category_item_value);

mMainLinearLayout.addView(categoryValueTextView);

In questo esempio, è gonfiato un LinearLayout contenente un TextView. Viene quindi ottenuto un riferimento al componente TextView e il TextView viene aggiunto dinamicamente (in fase di esecuzione) al layout lineare principale (mMainLinearLayout).

L'oggetto inflater può essere ottenuto in un'attività utilizzando getLayoutInflater().

Altri suggerimenti

Crea il layout della riga separatamente, dal XML principale

Ottieni il servizio LayoutInflater dal contesto:

LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATE_SERVICE);

Utilizza il seguente metodo per addView a Main XML, suppongo che tu abbia il layout genitore llparent in XML e desideri aggiungere elementi in questo llpaent, dall'elenco elenco.

for(int i=0;i<list.size();i++)
{
     LinearLayout llView=(LinearLayout)inflater.inflate(R.layout.row);
     //get view id and set values
     TextView txt=(TextView)llView.findViewById(R.id.text);
}

UN ListView è una buona vista per la visualizzazione di diversi elementi simili. Qui è un tutorial (anche altre viste con gli adattatori sono buone, come GridView o Gallery).
Probabilmente vorrai crearne uno tuo adapter Per l'elenco, in modo da poter visualizzare tutte e tre le viste (casella di controllo, immagine e testo) come un elemento, ma ci sono molti esempi su quello disponibile in rete e qui su così.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top