简体   繁体   English

如何为Android中的ListView中的每一行添加不同的活动

[英]how to add different activity for each row in listview in android

I know how to add activity to listview by using intent and you can see in below code that i added back.class to my mainactivity.java with customadapter.java file. 我知道如何通过使用Intent将活动添加到ListView中,您可以在下面的代码中看到我使用customadapter.java文件将back.class添加到mainactivity.java中。 But when i click on each row of listview everytime it open only one activity(back.class). 但是,当我每次单击列表视图的每一行时,它仅打开一个活动(back.class)。 Now i want to add different activity (leg.class, abs.class, chest.class etc) to my mainactivity.java using intent So when you click on each row of listview it will open different activity. 现在,我想使用意图将不同的活动(leg.class,abs.class,Chest.class等)添加到我的mainactivity.java中,因此,当您单击列表视图的每一行时,它将打开不同的活动。 I don't know how to do it? 我不知道该怎么做?

This is my mainactitvity.java file 这是我的mainactitvity.java文件

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        String[] excercise = {"Back DAY", "Legs DAY", "Abs DAY", "Chest DAY", "Shoulder DAY", "Arms DAY"};
        final int[] imgs = {R.drawable.back, R.drawable.leg, R.drawable.abs, R.drawable.chest, R.drawable.shoulder, R.drawable.arms};
        ListAdapter saruadapter = new customadapter(this, excercise, imgs);
        ListView sarulistview = (ListView) findViewById(R.id.sarelistview);
        sarulistview.setAdapter(saruadapter);

       // Intent intent = new Intent();
       // startService(intent);


        sarulistview.setOnItemClickListener(
                new android.widget.AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                      //  String excercise = String.valueOf(parent.getItemAtPosition(position));
                       // Toast.makeText(MainActivity.this, excercise, Toast.LENGTH_LONG).show();
                        Intent i = new Intent(MainActivity.this, back.class);
                        startActivity(i);
                    }
                }
        );
    }
}

This is my customadapter.java file 这是我的customadapter.java文件

public class customadapter extends ArrayAdapter<String>{
    private int[] imgs;
    public customadapter(Context context, String[] excercise, int[] imgs) {
        super(context, R.layout.custom_row, excercise);
        this.imgs = imgs;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater saruinflator = LayoutInflater.from(getContext());
        View coustomView = saruinflator.inflate(R.layout.custom_row, parent, false);

        String excerciseitem = getItem(position);
        TextView saruview = (TextView) coustomView.findViewById(R.id.sareview);
        ImageView saruimg = (ImageView) coustomView.findViewById(R.id.sareimage);

        saruview.setText(excerciseitem);
        saruimg.setImageResource(imgs[position]);
        return coustomView;
    }
}

This is my back.java file 这是我的back.java文件

public class back extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bacon2);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Bundle back = getIntent().getExtras();

        if(back == null)
        {
            return;
        }
    }
}

Use Switch Condition and use the Position to Open new Activity. 使用“切换条件”并使用“职位”来打开新活动。

  sarulistview.setOnItemClickListener(
        new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              //  String excercise = String.valueOf(parent.getItemAtPosition(position));
               // Toast.makeText(MainActivity.this, excercise, Toast.LENGTH_LONG).show();
       switch (position) {

        case 0:
            Intent i0 = new Intent(MainActivity.this, back.class);
            startActivity(i0);

            break;
        case 1:
            Intent i1 = new Intent(MainActivity.this, leg.class);
            startActivity(i1);
            break;
        case 2:
            Intent i2 = new Intent(MainActivity.this, abs.class);
            startActivity(i2);
            break;
        case 3:
            Intent i3 = new Intent(MainActivity.this, chest.class);
            startActivity(i3);
            break;

    }
            }
        }
);

When you set onItemClick to your ListView you get the postion for the clicked item. 当将onItemClick设置为ListView时,将获得所单击项目的位置。 So you need to do some type of check according to your need to open a different activity.One possible check can be using position .For eg:- 因此,您需要根据自己的需要进行某种类型的检查以打开其他活动。一种可能的检查方法是使用位置 。例如:-

     sarulistview.setOnItemClickListener(
            new android.widget.AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    //  String excercise = String.valueOf(parent.getItemAtPosition(position));
                    // Toast.makeText(MainActivity.this, excercise, Toast.LENGTH_LONG).show();
                    if (position == 1) {
                        Intent i0 = new Intent(MainActivity.this, back.class);
                        startActivity(i0);
                    }
                    else if(position == 2){
                        Intent i1 = new Intent(MainActivity.this, chess.class);
                        startActivity(i1);
                    }else {
                        Intent i2 = new Intent(MainActivity.this, abc.class);
                        startActivity(i2); 
                    }
                }
            }
    );

This is just an example approach.The business logic will depend upon your need. 这只是一个示例方法。业务逻辑将取决于您的需求。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM