How to take the item information from a java listview and insert it into an android studio textview?

Asked

Viewed 582 times

0

I am learning to program, and I started a project in q shows the information about the Formula 1 teams, such as pilots, age, nationality and titles of each.

When you click on an item, you will be taken to an Activity containing the information about the played team. inserir a descrição da imagem aqui I wish I could take this information and send it to us.

public class Ferrari{
        String nomePiloto1 = "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, only changes the information between quotes.

  • advice is to stop using listview and start using Recycler view

1 answer

1


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

Activity of the Team List

 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);
    }
});

Activity of the list of Pilots

 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 to work

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

Since all Teams classes are equal use only one class called Team to create list items, this makes it easy to write and read code

  • But as they are two pilots to be shown it would not be necessary "age1"ïdade2" and so on?

  • If you want to show a list of teams first create a class named "Team" instead of "Ferrari" (if they have the same attributes), it makes it easier to read the code. If you want to show a list in the other Activity you will have to pass a "Team" object containing the respective drivers and only in this list put the code to show the driver above, as you passed the class with the pilot name and etc. I found that were the details of the pilot, sorry. I’ll update the code

  • The list I want to leave as it is, I just want to create a profile for each team showing the data of the pilots

  • See if it is now the right way. I left the part that shows the details of the pilot for if you want to use in the future

Browser other questions tagged

You are not signed in. Login or sign up in order to post.