Autore Topic: ListView a più elementi  (Letto 768 volte)

Offline Mate13

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.11
ListView a più elementi
« il: 08 Novembre 2015, 15:30:08 CET »
0
Salve a tutti,
sto creando un'activity di un app che contenga li vista dei prof della mia scuola con gli orari di ricevimento. Quello che vorrei fare è una doppia textview nella listview, la principale con il nome della materia e la secondaria con il nome del professore, poi al click che si apra una nuova activity con ulteriori dati... ho fatto quasi tutto tranne la doppia textview. Vi posto il codice:
Codice (Java): [Seleziona]
package androidhive.info.scienzeapplicatemotta.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;

import androidhive.info.scienzeapplicatemotta.R;


public class ProfFragment extends Fragment{

    String matematica,scienze,fisica,religione,ginnastica,storia,filosofia,inglese,informatica,arte, italiano;
    String matematica_ricevimento,scienze_ricevimento,fisica_ricevimento,religione_ricevimento,ginnastica_ricevimento,storia_ricevimento,italiano_ricevimento,inglese_ricevimento,informatica_ricevimento,arte_ricevimento;
    String matematica_orario,scienze_orario,fisica_orario,religione_orario,ginnastica_orario,storia_orario,italiano_orario,inglese_orario,informatica_orario,arte_orario;
    String matematica_prof,scienze_prof,fisica_prof,religione_prof,ginnastica_prof,storia_prof,italiano_prof,inglese_prof,informatica_prof,arte_prof;

    public ProfFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
              View myFragmentView = inflater.inflate(R.layout.fragment_prof, container, false);
       

        matematica="Matematica"; matematica_prof="--"; matematica_ricevimento="Venerdì"; matematica_orario="11:10 - 12:05";

        scienze="Scienze"; scienze_prof="--"; scienze_ricevimento="Lunedì"; scienze_orario="11:10 - 12:05";

        fisica="Fisica"; fisica_prof="--"; fisica_ricevimento="Sabato"; fisica_orario="10:15 - 11:10";

        religione="Relegione"; religione_prof="--"; religione_ricevimento="Venerdì"; religione_orario="11:10 - 12:05";

        ginnastica="Ed. Fisica"; ginnastica_prof="--"; ginnastica_ricevimento="Martedì"; ginnastica_orario="10:15 - 11:10";

        storia="Storia"; storia_prof="--"; storia_ricevimento="Giovedì"; storia_orario="10:15 - 11:10";

        filosofia="Filosofia";

        informatica="Informatica"; informatica_prof="--"; informatica_ricevimento="Venerdì"; informatica_orario="10:15 - 11:10";

        inglese="Inglese"; inglese_prof="--"; inglese_ricevimento="Sabato"; inglese_orario="09:05 - 10:00";

        arte="Arte"; arte_prof="--"; arte_ricevimento="Martedì"; arte_orario="09:05 - 10:00";

        italiano="Italiano"; italiano_prof="--"; italiano_ricevimento="Giovedì"; italiano_orario="11:10 - 12:05";



        final ListView lista = (ListView) myFragmentView.findViewById(R.id.profList);


        final String [][] ricevimenti_prof = {{italiano, matematica, scienze, fisica, informatica, storia, filosofia, inglese, religione, arte, ginnastica},
                {italiano_prof, matematica_prof, scienze_prof, fisica_prof, informatica_prof, storia_prof, storia_prof, inglese_prof, religione_prof, arte_prof, ginnastica_prof},
                {italiano_ricevimento, matematica_ricevimento, scienze_ricevimento, fisica_ricevimento, informatica_ricevimento, storia_ricevimento, storia_ricevimento, inglese_ricevimento, religione_ricevimento, arte_ricevimento, ginnastica_ricevimento},
                {italiano_orario ,matematica_orario, scienze_orario, fisica_orario, informatica_orario, storia_orario, storia_orario, inglese_orario, religione_orario, arte_orario, ginnastica_orario}
        };

        final ArrayAdapter<String> materiaAdapter, profAdapter;


        List<String> materia =  new ArrayList<String>(Arrays.asList(ricevimenti_prof[0]));
        //List<String> prof =  new ArrayList<String>(Arrays.asList(ricevimenti_prof[1]));

        materiaAdapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_prof, R.id.materiaItems, materia);
       // profAdapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_prof, R.id.profItem, prof);


        lista.setAdapter(materiaAdapter);
       // lista.setAdapter(profAdapter);


       

        lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {

                String materia = (String) materiaAdapter.getItem(pos);
                String prof = (String) ricevimenti_prof[1][pos];
                String ricevimento = (String) ricevimenti_prof[2][pos];
                String orario = (String) ricevimenti_prof[3][pos];

                //Toast.makeText(getActivity(),materia + prof + ricevimento + orario, Toast.LENGTH_SHORT).show();

                Intent a = new Intent(getActivity(), ProfDetails.class);
                a.putExtra("materia", materia);
                a.putExtra("nome", prof);
                a.putExtra("ricevimento", ricevimento + " - " + orario);
                startActivity(a);
            }
        });


        return myFragmentView;
    }


}

Il codice ora postato è funzionante per un elemento soltanto nella listview, quello commentato sarebbe quello aggiuntivo non funzionante per il secondo elemento... come posso risolvere?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:ListView a più elementi
« Risposta #1 il: 08 Novembre 2015, 15:33:33 CET »
0
Non ti serve avere due adapter. Ti serve un solo adapter. Per la precisione uno custom. Devi infatti creare una classe che estende ArrayAdapter

Offline Mate13

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.11
Re:ListView a più elementi
« Risposta #2 il: 08 Novembre 2015, 15:36:21 CET »
0
Non ti serve avere due adapter. Ti serve un solo adapter. Per la precisione uno custom. Devi infatti creare una classe che estende ArrayAdapter


Avevo letto qualcosa del genere ma non hp ben capito come funzione...
Potresti spiegarmi ?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:ListView a più elementi
« Risposta #3 il: 08 Novembre 2015, 15:37:40 CET »
0
Si. In questo forum c'è un tutorial in ITA che tratta di un custom arrayadaoter. In alternativa ci sono migliaia di guide on Line. Non è molto difficile

Offline Mate13

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.11
Re:ListView a più elementi
« Risposta #4 il: 08 Novembre 2015, 15:39:42 CET »
0
Si. In questo forum c'è un tutorial in ITA che tratta di un custom arrayadaoter. In alternativa ci sono migliaia di guide on Line. Non è molto difficile


Ok grazie mille:) provo a cercare

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:ListView a più elementi
« Risposta #5 il: 16 Novembre 2015, 12:32:30 CET »
0
Io ti consiglio un arrayAdapter. Cmq è molto semplice. Se poi riuscito ?
Chi non progetta la sicurezza , programma il fallimento! K.M

Offline Mate13

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.11
Re:ListView a più elementi
« Risposta #6 il: 12 Dicembre 2015, 20:47:51 CET »
0
Scusate ne non ho più risposto ma per un periodo non ho più avuto tempo. Si alla fine ce l'ho fatta! vi ringrazio tutti:)
Ora devo allargare la listview anche con una immagine a lato (stile whatsapp per capirsi), continuo apmpliando l'adapter che ho già o per tre elementi il codice è diverso?

Offline Klizard

  • Utente junior
  • **
  • Post: 62
  • Respect: 0
    • Mostra profilo
Re:ListView a più elementi
« Risposta #7 il: 12 Dicembre 2015, 22:41:03 CET »
0
Scusate ne non ho più risposto ma per un periodo non ho più avuto tempo. Si alla fine ce l'ho fatta! vi ringrazio tutti:)
Ora devo allargare la listview anche con una immagine a lato (stile whatsapp per capirsi), continuo apmpliando l'adapter che ho già o per tre elementi il codice è diverso?
Esatto. Ovviamente devi anche aggiungere l'imageview nel layout dell'adapter

Offline Mate13

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.11
Re:ListView a più elementi
« Risposta #8 il: 12 Dicembre 2015, 22:43:55 CET »
0
L'imageview è già inserito con un'immagine statica, ora volevo renderla dinamica in base all'id. Appena proverò vi farò sapere

Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:ListView a più elementi
« Risposta #9 il: 12 Dicembre 2015, 22:47:37 CET »
0
Si cmq non è difficile se hai problemi scrigi

Inviato dal mio MotoG3 utilizzando Tapatalk

Chi non progetta la sicurezza , programma il fallimento! K.M