Autore Topic: inserire e visualizzare i dati sulla listview  (Letto 301 volte)

Offline Rubin

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony Experia
  • Sistema operativo:
    windows 8
inserire e visualizzare i dati sulla listview
« il: 15 Giugno 2015, 23:03:00 CEST »
0
Buonasera a tutti sono nuovo nel forum, anche se seguo spesso le vostre guide ogni volta che ho qualche problema con l'applicazione.
Mi servirebbe una mano con l'applicazione, sono ancora un principiante in Android e commetto tanti errori.
Passiamo al dunque, sto cercando di fare una specie di lista utilizzando le listview, inserisco i dati da tastiera e premendo sul bottone "add" dovrei vedere i dati inseriti nella listview.
Quando inserisco il primo dato funziona bene, quando inserisco il secondo, il valore del secondo dato sostituisce quello del primo, cosi ho due valori uguali nella listview; stessa cosa anche se ne aggiungo un'altro.
Ho davvero bisogno del vostro aiuto.

Codice dell'Activity Spesa.java(non copio i vari import) :

Codice: [Seleziona]
public class Spesa  extends Activity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spesa_layout);

        final Button add_btn = (Button)findViewById(R.id.btn_add);

         final ArrayList<HashMap<String, String>> data=new ArrayList<HashMap<String,String>>();
        final HashMap<String,String> personMap=new HashMap<String, String>();

        final EditText et_main = (EditText)findViewById(R.id.et_main);
       final EditText costo= (EditText)findViewById(R.id.costo);

        add_btn.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                String str = et_main.getText().toString();
                String str2 = costo.getText().toString();
                personMap.put("name", str);
                personMap.put("code", str2);
                data.add(personMap);
       
                String[] from = {"name", "code"};
                int[] to = {R.id.textView1, R.id.textView3};

        SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(), data,R.layout.row,from,to);

                //Setting Adapter to ListView

        ((ListView)findViewById(R.id.list)).setAdapter(adapter);

            }});
}
}

Codice spesa_layout.xml :

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Enter Text" />

    <EditText
        android:id="@+id/et_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="prodotto">

        <requestFocus />
    </EditText>

   <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="costo"
        android:id="@+id/costo">
</EditText>
    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btn_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="Add" />
       

   
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relativeLayout3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="center" >
    </ListView>

    </LinearLayout>
</LinearLayout>


Codice row.xml :

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="5dp"
            android:text="TextView"/>


        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginRight="36dp"
            android:layout_toLeftOf="@+id/textView2"
            android:text="TextView"
            android:layout_toRightOf="@+id/textView1"
            android:layout_marginLeft="130dp"/>

    </RelativeLayout>
    </LinearLayout>



Offline xixietto

Re:inserire e visualizzare i dati sulla listview
« Risposta #1 il: 16 Giugno 2015, 07:19:24 CEST »
0
Stesso problema ma io inserisco i dati del DB

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline xixietto

Re:inserire e visualizzare i dati sulla listview
« Risposta #2 il: 21 Giugno 2015, 21:24:38 CEST »
0
 Dovresti mettere i valori in un DB e fare un for

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:inserire e visualizzare i dati sulla listview
« Risposta #3 il: 22 Giugno 2015, 09:15:27 CEST »
0
Come prima cosa non dichiarare come final delle variabili che sicuramente (o quasi) cambiano valore, come ad esempio l'arraylist.
In seconda battuta, se la lista "data" la usi solamente nel listener non dichiararla globale (che poi ti obbliga a essere final per usarla), ma la dichiari solo nel listener e la inizializzi con listview.getadapter prima di aggiungere il nuovo valore, poi notifica che è cambiato.
Se la mia risposta ti è utile, per favore un thanks!