2013-06-18 5 views
5

Speriamo che questa non sia una cattiva domanda, tuttavia ho cercato attraverso S.O. e non sono stato in grado di trovare la risposta.Come creare un numero variabile di visualizzazioni di testo in Android

Sto creando un'applicazione Android che è essenzialmente una sveglia. Voglio che l'attività principale mostri tutti gli allarmi che sono stati creati insieme ad alcune informazioni sugli allarmi. La mia domanda su questo è come creare un determinato numero di visualizzazioni di testo in base al numero di allarmi creati. Ad esempio, se un utente ha creato (e non cancellato) 5 allarmi, come faccio a visualizzare 5 visualizzazioni di testo anziché solo un numero codificato di viste di testo? Di seguito è riportato il mio prototipo orribilmente codificato per testare la funzionalità (a parte questo hangup).

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".Launch" > 

    <ScrollView 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <LinearLayout android:orientation="vertical" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent"> 

      <TextView 
       android:orientation = "vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="75dp" 
       android:text="Time"/> 
        <View 
        android:layout_width="fill_parent" 
        android:layout_height="0.2dp" 
        android:id="@+id/separator" 
        android:visibility="visible" 
        android:background="@android:color/darker_gray"/> 

      <TextView 
       android:orientation = "vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="75dp" 
       android:text="Time"/> 
        <View 
        android:layout_width="fill_parent" 
        android:layout_height="0.2dp" 
        android:id="@+id/separator" 
        android:visibility="visible" 
        android:background="@android:color/darker_gray"/> 

      <TextView 
       android:orientation = "vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="75dp" 
       android:text="Time"/> 
        <View 
        android:layout_width="fill_parent" 
        android:layout_height="0.2dp" 
        android:id="@+id/separator" 
        android:visibility="visible" 
        android:background="@android:color/darker_gray"/> 


     </LinearLayout> 

    </ScrollView> 


</RelativeLayout> 

Come si può vedere, ci sono solo tre viste hard-coded testo piuttosto che un certo numero di punti di vista del testo, come creato dall'utente.

Ancora una volta, spero che questo non sia troppo approfondito o che abbia una risposta pubblicata altrove ma l'ho cercata e non ho trovato nulla.

Grazie in anticipo!

+0

si avrebbe bisogno di fare questo programatically, non solo attraverso XML. –

+0

puoi usare listview e cursoradapter per quello invece di scrollview.Voglio dire se salvi gli allarmi in db allora puoi usare un listview con cursoradapter per gli allarmi di visualizzazione –

+0

Vedi se la mia risposta ti aiuta. Dato che sei nuovo su SO, dai un'occhiata a [tour] (http://stackoverflow.com/about). –

risposta

4

È possibile farlo a livello di codice:

int size = numAlarms; // total number of TextViews to add 

TextView[] tv = new TextView[size]; 
TextView temp; 

for (int i = 0; i < size; i++) 
{ 
    temp = new TextView(this); 

    temp.setText("Alarm: " + i); //arbitrary task 

    // add the textview to the linearlayout 
    myLinearLayout.addView(temp); 

    tv[i] = temp; 
} 
+0

Quindi, per essere sicuro che sto capendo correttamente, nell'uso della soluzione programmatica che hai suggerito, avrei anche bisogno di aggiungere un layout lineare a livello di codice e anche prima nel codice, o posso aggiungerlo ad un riferimento xml in qualche modo? O suppongo di poter recuperare il mio layout lineare xml con: 'LinearLayout linearLayout = (LinearLayout) findViewById (R.id.IdToBeSetInXml);' –

+0

Sì, puoi farlo. –

Problemi correlati