Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何单击ListView项目并打开引用我单击的项目的活动?_Java_Android_Mobile - Fatal编程技术网

Java 如何单击ListView项目并打开引用我单击的项目的活动?

Java 如何单击ListView项目并打开引用我单击的项目的活动?,java,android,mobile,Java,Android,Mobile,我点击一个自定义的listview项目,每个人都会打开相同的活动,我希望每个项目都会打开不同的活动。 我试过几种方法,但我不明白,我是初学者,知识不多,所以我来这里寻求帮助。 它不必是代码准备,你可以告诉我一些帮助,它会帮助很多 public class artilheiros extends AppCompatActivity { int [] Imagens = {R.drawable.arg, R.drawable.bolivia, R.drawable.brasil, R.dr

我点击一个自定义的listview项目,每个人都会打开相同的活动,我希望每个项目都会打开不同的活动。 我试过几种方法,但我不明白,我是初学者,知识不多,所以我来这里寻求帮助。 它不必是代码准备,你可以告诉我一些帮助,它会帮助很多

    public class artilheiros extends AppCompatActivity {

int [] Imagens = {R.drawable.arg, R.drawable.bolivia, R.drawable.brasil, R.drawable.chile,
          R.drawable.colombia, R.drawable.chile, R.drawable.paraguai, R.drawable.uruguai,
          R.drawable.arg, R.drawable.bolivia, R.drawable.brasil, R.drawable.chile,
          R.drawable.colombia, R.drawable.chile, R.drawable.paraguai};

String [] Nomes = {"ART 1", "ART 2", "ART 3", "ART 4", "ART 5", "ART 6", "ART 7", "ART 8",
                    "ART 9", "ART 10", "ART 11", "ART 12", "ART 13", "ART 14", "ART 15"};

String [] Times = {"TIME 1", "TIME 2", "TIME 3", "TIME 4", "TIME 5", "TIME 6", "TIME 7",
        "TIME 8", "TIME 9", "TIME 10", "TIME 11", "TIME 12", "TIME 13", "TIME 14", "TIME 15"};

String [] Gols = {"999 gols", "999 gols", "999 gols", "999 gols", "999 gols", "999 gols", "999 gols",
       "999 gols", "999 gols", "999 gols", "999 gols", "999 gols", "999 gols", "999 gols", "999 gols"};



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

    final ListView listview = findViewById(R.id.listviewart);
    ListView listview2 = findViewById(R.id.listviewart);

    CustomAdapter customAdapter = new CustomAdapter();

    listview.setAdapter(customAdapter);

    int position = getIntent().getIntExtra("a", 0);

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            artilheiros a1 = (artilheiros) listview.getItemAtPosition(0);
            Intent it = new Intent(artilheiros.this, campeoes.class);
            it.putExtra("a1", position);
            startActivity(it);
        }
    });



}

class CustomAdapter extends BaseAdapter{




    @Override
    public int getCount() {
        return Imagens.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        convertView = getLayoutInflater().inflate(R.layout.customlistview, null);
        ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView);
        TextView textViewnome = (TextView) convertView.findViewById(R.id.textViewnome);
        TextView textViewtime = (TextView) convertView.findViewById(R.id.textViewtime);
        TextView textViewgols = (TextView) convertView.findViewById(R.id.textViewgols);

        imageView.setImageResource(Imagens[position]);
        textViewnome.setText(Nomes[position]);
        textViewtime.setText(Times[position]);
        textViewgols.setText(Gols[position]);



        return convertView;
    }
}

}您可以使用switch语句。例如,McClick:

switch (position) {
case 0: 
//start Activity 1
break;
case 1:
// start Activity 2
break;
// etc
}

您没有告诉我们这些活动是什么,但一般原则是使用尽可能少的活动。也许您可以使用一个片段,然后从onItemClick中更改该片段的一些数据。

根据阵列中的数据,我无法想象您希望启动的活动可能会彼此非常不同。更可能的情况是,活动是相同的,只有内容会根据您在ListView中选择的项目的值而更改。第二:如果您使用getter和setter为属性图像、名称、时间和目标创建一个自定义类,那么您的代码将更干净、更易于维护和实现。创建该类的新对象,并将其添加到传递给适配器的ArrayList中。谢谢,它就在这里解决了,以防打开6个活动需要6个项目,每个活动1个欢迎。在将来,尽量减少活动的数量,因为它们是相当大的对象,并且有许多您不需要的方法。