How do I get information from items in a java listview and insert them into a textview android studio?

0

I'm learning to program, and I started a project where q shows information about Formula 1 teams, such as riders, age, nationality and titles of each.

ClickingonanitemwilltakeyoutoanActivitycontainingtheinformationabouttheteambeingplayed. Iwouldliketobeabletogetthisinformationandsendittothetextview.

publicclassFerrari{StringnomePiloto1="Sebastian Vettel";
        String idadePiloto1 = "25 anos";
        String titulosPiloto1 = "4 títulos";
        String nacionalPiloto1 = "Alemanha";
        int fotoPiloto1 = R.drawable.vettel;
        String nomePiloto2 = "Kimi Raikkonen";
        String idadePiloto2 = "29 anos";
        String titulosPiloto2 = "1 titulo";
        String nacionalPiloto2 = "Finlandia";
        int fotoPiloto2 = R.drawable.raikkonen;
    } 

Each team has an equal public class, it only changes the information in quotation marks.

    
asked by anonymous 24.01.2018 / 20:13

1 answer

1

If you want to pass this information to a TextView into another Activity you can use listView.setOnItemClickListener() and pass the data via Intent :

Teams list activity

 public static final String KEY_EQUIPE = "equipe"; 

 //onCreate
 ...

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Equipe equipe = list.get(position);
        Intent intent = new Intent(ListEquipesActivity.this, DetalhesEquipesActivity.class)
        intent.putExtra(KEY_EQUIPE , equipe);
        startActivity(intent);
    }
});

Pilots list activity

 public static final String KEY_EQUIPE = "equipe";

 public static final String KEY_PILOTO = "piloto";

 //no onCreate
 ...

 Intent intent = getIntent();
 Equipe equipe = intent.getSerializableExtra

 //Como são apenas dois pilotos por equipe e já tem esses argumentos na sua classe Equipe, você pode fazer isso estaticamente
 //Se o número de pilotos de cada equipe não for um número estático, você terá que mudar o construtor da sua classe
 //para construir um piloto de cada vez e fazer um Adapter para tal


 //Forma de setar os nomes com layout atual
 TextView nomePiloto1 = findViewbyid(R.id.nome_piloto_1);
 nomePiloto1.setText(equipe.getNomePiloto1);
 //Faça isso para todas as outras TextViews


 //Funcionará assim se o número de pilotos não for estático
 //Se quiser ter o mesmo resultado com o código atual pode setar um OnClickListener para cada layout de piloto

 ListView listView = findViewById(R.id.listView) //Recupera sua listView no Java
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Piloto piloto = list.get(position);
            Intent intent = new Intent(ListActivity.this, DetalhesActivity.class)
            intent.putExtra(KEY_PILOTO, piloto);
            startActivity(intent);
        }
    });

Activity of details

 public static final String KEY_PILOTO = "piloto";

 //No onCreate()
 Intent intent = getIntent();
 Piloto piloto= intent.getSerializableExtra(KEY_PILOTO);

 TextView textDetalhesNome = findViewById(R.id.text_detalhes_nome);
 textDetalhesNome.setText(piloto.getNomePiloto1()); 

 TextView textDetalhesIdade = findViewById(R.id.text_detaçhes_idade);
 textdetalhesIdade.setText(piloto.getIdadePiloto1());
 //Adicione mais o que quiser aqui, foi só um ex
  

Your Pilot and Team class needs to implement the Serializable interface for this to work

     

"I created" a Pilot class if you want to use this code later

Since all Team classes are the same, use only one class called Team to create list items, this makes it easier to write and read code

    
25.01.2018 / 00:49