Search code examples
android-studioandroid-listviewonitemclicklistener

How to make pressing an item in my ListView there will be a new Activity


I have a ListView with an AdapterView, but I want to know how to do that by clicking on an item there will be a new Activity. I already have the onItemClick event and I want to know what code I should implement so that by making each item in the listview there will be an Activity in special.

public class Alumnos extends AppCompatActivity {

ListView list;
private Toolbar toolbar;
String titulos[] = {"Vicente Nevarez", "Giovanny Alvarado", "Rogelio Lanka",
        "Alan Barrera",
        "Fatima Botello",
        "Paola Gomez",
        "Eric Zapata",
        "Jose Juan Lozano",
        "Alondra Flores",
        "Yoali"};

String descripcion[] = {"Rendimento: Bueno  Grupo: 4B", "Rendimento: Bueno  Grupo: 4B", "Rendimento: Medio  Grupo: 4B", "Rendimento: Malo  Grupo: 4B", "Rendimento: Bueno  Grupo: 4B", "Rendimento: Malo  Grupo: 4B", "Rendimento: Bueno  Grupo: 4B", "Rendimento: Bueno  Grupo: 4B", "Rendimento: Medio  Grupo: 4B", "Rendimento: Bueno  Grupo: 4B"};

int imgs [] = {R.drawable.movies,
        R.drawable.movies,
        R.drawable.movies,
        R.drawable.alondra,
        R.drawable.alan,
        R.drawable.fatima,
        R.drawable.paola,
        R.drawable.movies,
        R.drawable.alondra,
        R.drawable.yoaly,};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alumnos);


    list = findViewById(R.id.list1);
    toolbar  = (Toolbar) findViewById(R.id.ToolbarAlu);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Alumnos Agregados");




    MyAdapter adapter = new MyAdapter(this, titulos, imgs, descripcion);
    list.setAdapter(adapter);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            if (position==0){
                Toast.makeText(Alumnos.this, "El mas chido", Toast.LENGTH_SHORT).show();
            }

        }
    });


}

//adapter to ListView:

class MyAdapter extends ArrayAdapter<String>{
    Context context;
    String myTitles[];
    String myDescripciones[];
    int[] imgs;

    MyAdapter(Context c, String[] titulos, int[] imgs, String[] descripcion){
        super(c,R.layout.activity_listview, R.id.txtt1, titulos);
        this.context=c;
        this.imgs=imgs;
        this.myTitles=titulos;
        this.myDescripciones=descripcion;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        LayoutInflater layoutInflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View listviewa = layoutInflater.inflate(R.layout.activity_listview, parent, false);

        CircleImageView images = listviewa.findViewById(R.id.logo);
        TextView myTilte = listviewa.findViewById(R.id.txtt1);
        TextView myDescripcion = listviewa.findViewById(R.id.txtt2);
        images.setImageResource(imgs[position]);
        myTilte.setText(titulos[position]);
        myDescripcion.setText(descripcion[position]);


        return listviewa;
    }
}
}

Solution

  • The integer position inside onItemClick returns the position of the clicked item (for example 0 for the first list item). So you can add a switch that checks the value of position and launch a different Activity for each value.

    The code would look like this:

    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
    
        switch(position) { 
            case 0:
            startActivity(new Intent(getApplicationContext(), ActivityA.class));
            break;
    
            case 1:
            startActivity(new Intent(getApplicationContext(), ActivityB.class));
            break;
    
            case 2:
            startActivity(new Intent(getApplicationContext(), ActivityC.class));
            break;
    
         }
    }