Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    30

    Qualche problema con il .setAdapter(adapter)?

    Ciao a tutti,

    Lavorando ad un progetto mobile su Android Studio, sono bloccato da questa mattina con questo problema: l'applicazione mi crasha e il problema(debuggando) sembra essere il settaggio dell'adattatore nella variabile...

    Vi allego il codice per provare a capirci qualcosa in più:

    MainActivity.java

    codice:
    package com.example.punta.myapplication;
    
    import android.content.Context;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final ListaKontatti utenti = new ListaKontatti();
            Adattatore myAdapter = new Adattatore(this, android.R.layout.list_content, utenti);
    
            ListView lista = (ListView)findViewById(R.id.lista);
            lista.setAdapter(myAdapter);
    
            lista.setOnItemClickListener(
                    new AdapterView.OnItemClickListener() {
    
                        @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                            Utente u = utenti.get(i);
                            Log.d("aaa Prova", u.getNome() + ": " + u.getKilometri() + " km\nUltimo accesso : " + u.getGiorni());
                        }
    
                    }
            );
        }
    }
    Adattatore.java

    codice:
    package com.example.punta.myapplication;
    
    import android.content.Context;
    import android.support.annotation.IdRes;
    import android.support.annotation.LayoutRes;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.TextView;
    
    import java.util.List;
    
    
    public class Adattatore extends ArrayAdapter<Utente> {
    
        public Adattatore(@NonNull Context context, @LayoutRes int resource) {
            super(context, resource);
        }
    
        public Adattatore(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId) {
            super(context, resource, textViewResourceId);
        }
    
        public Adattatore(@NonNull Context context, @LayoutRes int resource, @NonNull Utente[] objects) {
            super(context, resource, objects);
        }
    
        public Adattatore(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull Utente[] objects) {
            super(context, resource, textViewResourceId, objects);
        }
    
        public Adattatore(@NonNull Context context, @LayoutRes int resource, @NonNull List<Utente> objects) {
            super(context, resource, objects);
        }
    
        public Adattatore(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull List<Utente> objects) {
            super(context, resource, textViewResourceId, objects);
        }
    
        @NonNull
        @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            View v = convertView;
    
            if (v == null) {
                LayoutInflater vi;
                vi = LayoutInflater.from(getContext());
                v = vi.inflate(R.layout.cella_lista, null);
            }
            Utente p = getItem(position);
            if (p != null) {
                TextView tt1 = (TextView) v.findViewById(R.id.nome);
                TextView tt2 = (TextView) v.findViewById(R.id.kilometri);
                TextView tt3 = (TextView) v.findViewById(R.id.giorni);
                tt1.setText(p.getNome());
                tt2.setText(String.valueOf(p.getKilometri()));
                tt3.setText(p.getGiorni());
    
            }
            return v;
        }
    }
    Activity_main.xml

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
        <ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/lista" />
    
    </android.support.constraint.ConstraintLayout>

    Cella_lista.xml

    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    
        <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="32sp"
    android:id="@+id/nome"/>
    
        <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="50sp"
    android:id="@+id/kilometri"/>
    
        <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="50sp"
    android:id="@+id/giorni"/>
    
    </LinearLayout>
    Grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Che cos'è ListaKontatti? E' una tua classe, di cui non hai fornito alcun dettaglio.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    30
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Che cos'è ListaKontatti? E' una tua classe, di cui non hai fornito alcun dettaglio.

    Ciao.
    Sì, è la classe che mi contiene i dati:

    ListaKontatti.java
    codice:
    package com.example.punta.myapplication;
    import java.util.ArrayList;
    
    public class ListaKontatti extends ArrayList<Utente> {
    
        public ListaKontatti(){
    
            super();
            this.add(new Utente("Marco", 5, 2));
            this.add(new Utente("Franco", 0.6, 1));
            this.add(new Utente("Chiara", 2, 15));
            this.add(new Utente("Alberta", 2, 2));
            this.add(new Utente("Yuki", 0.1, 0));
            this.add(new Utente("Ariel", 6.4, 3));
            this.add(new Utente("Marco", 100.5, 8));
            this.add(new Utente("Antonio", 78.7, 5));
            this.add(new Utente("Pino", 44, 0));
            this.add(new Utente("Mattia", 0.9, 0));
    
        }
    }
    
    
    Allego anche la classe Utente:

    Utente.java

    codice:
    package com.example.punta.myapplication;
    public class Utente {
    
        String nome;
        double kilometri;
        int giorni;
    
        public Utente(String N, double K, int G) {
    
                nome = N;
                kilometri = K;
                giorni = G;
    
        }
    
        public String getNome(){ return nome;}
        public double getKilometri() { return kilometri;}
        public int getGiorni() {return giorni;}
    
    }
    
    

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.