Autore Topic: Costruzione dinamico del layout  (Letto 1581 volte)

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Costruzione dinamico del layout
« il: 07 Febbraio 2012, 16:16:02 CET »
0
Salve a tutti :)
ragazzi, devo creare una tabella che si popola dinamicamente. Il problema è che non so come inserire nuove righe. Vi posto il codice che non funziona :)

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:weightSum="4" >
   
    <LinearLayout
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"
     >
       
        <Spinner
           android:id="@+id/locale"
           android:layout_height="wrap_content"
           android:layout_width="fill_parent"
           android:prompt="@string/spinnerText"
           />
    </LinearLayout>
   
    <TableLayout
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:stretchColumns="4"
       android:orientation="horizontal"
       android:layout_weight="4"
       >
       
        <TableRow>

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Ora"
                   android:textSize="25px"
                   android:textStyle="bold"/>

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Valore"
                   android:textSize="25px"
                   android:textStyle="bold" />

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Unità"
                   android:textSize="25px"
                   android:textStyle="bold" />

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Fault"
                   android:textSize="25px"
                   android:textStyle="bold" />
            </TableRow>
       
       
    </TableLayout>
   
        <LinearLayout
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical"
           >
       
            <Button
               android:text="Indietro"
               android:layout_height="wrap_content"
               android:layout_width="fill_parent"
               android:onClick="goBack"/>
           
        </LinearLayout>

   

</LinearLayout>

E questo è il codice dell'activity
Codice (Java): [Seleziona]
package core.sms.mobile;

import core.sms.mobile.FileManager.StoricoRilevazioni;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TableRow;
import android.widget.TextView;

public class StoricoActivity extends Activity {

   

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.storico_layout);
       
        String[] stringa = new String[4];
        Intent intent = getIntent();

        Spinner idLocale = (Spinner) findViewById(R.id.locale);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
                R.array.locali, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       
        idLocale.setAdapter(adapter);
       
        String pkg=getPackageName();
       
        StoricoRilevazioni sr = new StoricoRilevazioni(this);
       
        sr.openFileToRead();
       
        while(true) {
            stringa = sr.readStorico().split(" ");
           
           
            TableRow tr = new TableRow(this);
            TextView tv1 = new TextView(this);
            TextView tv2 = new TextView(this);
            TextView tv3 = new TextView(this);
            TextView tv4 = new TextView(this);
           
            tv1.setText(stringa[2]);
            tv2.setText(stringa[4]);
            tv3.setText(stringa[5]);
            tv4.setText(stringa[6]);

        }
       
       
    }
   
    public void goBack(View view) {
        Intent intent = new Intent(this, SMSMobile2Activity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP );
        this.startActivity(intent);
    }

}

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Costruzione dinamico del layout
« Risposta #1 il: 08 Febbraio 2012, 12:32:31 CET »
0
help me :(

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Postate il LogCat LogCat LogCat LogCat LogCat

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Costruzione dinamico del layout
« Risposta #3 il: 09 Febbraio 2012, 17:31:03 CET »
0
Grazie :) è proprio quello che cercavo...com'è che io non riesco a trovarle queste cose su google :(

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Costruzione dinamico del layout
« Risposta #4 il: 10 Febbraio 2012, 18:06:51 CET »
0
Continua a non funzionare, non mi visualizza niente...questo è il file activity

Codice (Java): [Seleziona]
public class StoricoActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.storico_layout);

        String[] stringa = new String[4];
        StoricoRilevazioni sr = new StoricoRilevazioni(this);

        Spinner idLocale = (Spinner) findViewById(R.id.locale);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
                R.array.locali, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        idLocale.setAdapter(adapter);

        sr.openFileToRead();
        String str;
       
        int j = 0;

        while (j != 10) {
j++;
            TableLayout tl = (TableLayout) findViewById(R.id.tableStorico);

            if ((str = sr.readStorico()) != null)
                stringa = str.split(" ");
           
            for (int i = 0; i < stringa.length; i++) {
                System.out.println(stringa[2]);
                System.out.println(stringa[4]);
                System.out.println(stringa[5]);
                System.out.println(stringa[6]);
            }

            TableRow tr = new TableRow(this);
            int currentR = 0;
            tr.setId(currentR);
            tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));

            // Crea una nuova TextView e l'aggiunge alla riga
            TextView tv1 = new TextView(this);
            tv1.setText(stringa[2]);
            tv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv1);

            // Seconda view Valore
            TextView tv2 = new TextView(this);
            tv2.setText(stringa[4]);
            tv2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv2);

            // Terza colonna Unita
            TextView tv3 = new TextView(this);
            tv3.setText(stringa[5]);
            tv3.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv3);

            // Quarta colonna
            TextView tv4 = new TextView(this);
            tv4.setText(stringa[6]);
            tv4.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv4);

            tl.addView(tr, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        }

    }

    public void goBack(View view) {
        Intent intent = new Intent(this, SMSMobile2Activity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
                | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);

    }

}

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Costruzione dinamico del layout
« Risposta #5 il: 12 Febbraio 2012, 12:53:50 CET »
0
Questa è la situazione attuale:

XML
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:weightSum="4" >
   
    <LinearLayout
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"
     >
       
        <Spinner
           android:id="@+id/locale"
           android:layout_height="wrap_content"
           android:layout_width="fill_parent"
           android:prompt="@string/spinnerText"
           />
    </LinearLayout>
   
    <TableLayout
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:stretchColumns="4"
       android:orientation="horizontal"
       android:layout_weight="4"
       android:id="@+id/tableStorico"
       >
 
        <TableRow>

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Ora"
                   android:textSize="25px"
                   android:textStyle="bold"/>

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Valore"
                   android:textSize="25px"
                   android:textStyle="bold" />

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Unità"
                   android:textSize="25px"
                   android:textStyle="bold" />

                <TextView
                   android:layout_width="120px"
                   android:layout_height="wrap_content"
                   android:gravity="center"
                   android:text="Fault"
                   android:textSize="25px"
                   android:textStyle="bold" />
            </TableRow>
 
       
    </TableLayout>
   
        <LinearLayout
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical"
           >
       
            <Button
               android:text="Indietro"
               android:layout_height="wrap_content"
               android:layout_width="fill_parent"
               android:onClick="goBack"/>
           
        </LinearLayout>

   

</LinearLayout>

Classe Activity
Codice (Java): [Seleziona]
package core.sms.mobile;

import core.sms.mobile.FileManager.StoricoRilevazioni;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class StoricoActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.storico_layout);

        String[] stringa = new String[4];
        StoricoRilevazioni sr = new StoricoRilevazioni(this);

        Spinner idLocale = (Spinner) findViewById(R.id.locale);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
                R.array.locali, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        idLocale.setAdapter(adapter);

        sr.openFileToRead();
        String str;
       
        int j = 0;

        while (j != 10) {
j++;
            TableLayout tl = (TableLayout) findViewById(R.id.tableStorico);

            if ((str = sr.readStorico()) != null)
                stringa = str.split(" ");
           
            for (int i = 0; i < stringa.length; i++) {
                System.out.println(stringa[2]);
                System.out.println(stringa[4]);
                System.out.println(stringa[5]);
                System.out.println(stringa[6]);
            }

            TableRow tr = new TableRow(this);
            int currentR = 0;
            tr.setId(currentR);
            tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));

            // Crea una nuova TextView e l'aggiunge alla riga
            TextView tv1 = new TextView(this);
            tv1.setText(stringa[2]);
            tv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv1);

            // Seconda view Valore
            TextView tv2 = new TextView(this);
            tv2.setText(stringa[4]);
            tv2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv2);

            // Terza colonna Unita
            TextView tv3 = new TextView(this);
            tv3.setText(stringa[5]);
            tv3.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv3);

            // Quarta colonna
            TextView tv4 = new TextView(this);
            tv4.setText(stringa[6]);
            tv4.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            tr.addView(tv4);

            tl.addView(tr, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        }

    }

    public void goBack(View view) {
        Intent intent = new Intent(this, SMSMobile2Activity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
                | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);

    }

}

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Costruzione dinamico del layout
« Risposta #6 il: 12 Febbraio 2012, 14:29:43 CET »
0
Ecco la soluzione.

Era questo metodo posto su ogni TextView.
Codice (Java): [Seleziona]
    tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));

Un grazie a Blackgin per la soluzione