如何在我的 ListView 中按下一个项目会有一个新的 Activity
How to make pressing an item in my ListView there will be a new Activity
我有一个带有 AdapterView 的 ListView,但我想知道如何通过单击一个项目来实现这一点,然后会有一个新的 Activity。我已经有 onItemClick 事件,我想知道我应该实现什么代码,以便通过在列表视图中制作每个项目,将有一个特殊的 Activity。
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();
}
}
});
}
//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;
}
}
}
position
内的整数 onItemClick
returns 单击项目的位置(例如第一个列表项目为 0)。因此,您可以添加一个开关来检查 position
的值并为每个值启动不同的 Activity。
代码如下所示:
@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;
}
}
我有一个带有 AdapterView 的 ListView,但我想知道如何通过单击一个项目来实现这一点,然后会有一个新的 Activity。我已经有 onItemClick 事件,我想知道我应该实现什么代码,以便通过在列表视图中制作每个项目,将有一个特殊的 Activity。
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();
}
}
});
}
//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;
}
}
}
position
内的整数 onItemClick
returns 单击项目的位置(例如第一个列表项目为 0)。因此,您可以添加一个开关来检查 position
的值并为每个值启动不同的 Activity。
代码如下所示:
@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;
}
}