2016-06-28 41 views
0

我知道如何使用intent将活动添加到listview中,您可以在下面的代码中看到我使用customadapter.java文件将back.class添加到了我的mainactivity.java中。 但是,当我每次点击listview的每一行时,它只会打开一个活动(back.class)。现在我想使用intent将不同的活动(leg.class,abs.class,chest.class等)添加到我的mainactivity.java中所以当你点击listview的每一行时,它会打开不同的活动。我不知道该怎么做?如何在listview中为每一行添加不同的活动android

这是我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); 
        } 
       } 
     ); 
    } 
} 

这是我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; 
    } 
} 

这是我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; 
     } 
    } 
} 

回答

1

使用切换条件和使用职位打开新的活动。

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; 

    } 
      } 
     } 
); 
0

当您设置onItemClick的ListView你的点击项目现在的位置。所以,你需要根据自己的需要打开不同的activity.One可能的检查做一些类型的检查可以使用位置。对于如: -

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

这仅仅是一个例子approach.The业务逻辑将取决于你的需要。

+0

切换if if语句更好。你可以做R&D. [阅读](http://stackoverflow.com/questions/38074756/how-to-add-different-activity-for-each-row-in-listview-in-android/38074869# 38074869) –

+0

@ Avinash8989 switch语句并不总是比if语句快。它比if-else语句的长表更好,因为交换机可以根据所有值执行查找。但是,对于一个短的情况,它不会更快,可能会更慢。 –

+0

虽然可能,但两者的表现几乎相同。两者都很好。 thnx纠正我。 –

相关问题