我有一个包含9个不同字符串的String-Array,并使用此字符串创建了一个ListVIEw;现在,当我点击ListVIEw的每个元素时,我想打开一个不同的Activity.我已经试过了
row.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { startActivity(new Intent((Activity)context, Workouts.class)); }});
但它只为所有项目打开相同的活动.如果你能为我提供一个有效的代码,那将是非常好的,因为我已经尝试过管理这个问题.
主要活动:
public class MainActivity extends Activity implements OnItemClickListener { private DrawerLayout drawerLayout; private ListVIEw ListVIEw; private ActionbarDrawerToggle drawerListener; private MyAdapter MyAdapter; @OverrIDe protected voID onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); drawerLayout=(DrawerLayout) findVIEwByID(R.ID.drawerLayout); ListVIEw=(ListVIEw)findVIEwByID(R.ID.drawerList); MyAdapter=new MyAdapter(this); ListVIEw.setAdapter(MyAdapter); ListVIEw.setonItemClickListener(this); drawerListener= new ActionbarDrawerToggle(this, drawerLayout, R.drawable.Listmenu, R.string.drawer_open, R.string.drawer_close){ @OverrIDe public voID onDrawerClosed(VIEw drawerVIEw) { // Todo auto-generated method stub super.onDrawerClosed(drawerVIEw); } @OverrIDe public voID onDrawerOpened(VIEw drawerVIEw) { // Todo auto-generated method stub Toast.makeText(MainActivity.this, " Drawer Opened ", Toast.LENGTH_SHORT).show(); } }; drawerLayout.setDrawerListener(drawerListener); getActionbar().setHomebuttonEnabled(true); getActionbar().setdisplayHomeAsUpEnabled(true); } @OverrIDe public boolean onoptionsItemSelected(MenuItem item) { // Todo auto-generated method stub if (drawerListener.onoptionsItemSelected(item)) { return true; } return super.onoptionsItemSelected(item); } @OverrIDe public voID onConfigurationChanged(Configuration newConfig) { // Todo auto-generated method stub super.onConfigurationChanged(newConfig); drawerListener.onConfigurationChanged(newConfig); } @OverrIDe protected voID onPostCreate(Bundle savedInstanceState) { // Todo auto-generated method stub super.onPostCreate(savedInstanceState); drawerListener.syncState(); } @OverrIDe public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { } public voID selectItem(int position) { ListVIEw.setItemChecked(position, true); } public voID setTitle(String Title) { getActionbar().setTitle(Title); class MyAdapter extends BaseAdapter { private Context context; String[] planets; int[] images = { R.drawable.home, R.drawable.workout, R.drawable.week, R.drawable.gallery, R.drawable.statistics, R.drawable.settings}; public MyAdapter(Context context) { this.context=context; planets=context.getResources().getStringArray(R.array.planets); } @OverrIDe public int getCount() { // Todo auto-generated method stub return planets.length; } @OverrIDe public Object getItem(int position) { // Todo auto-generated method stub return planets[position]; } @OverrIDe public long getItemID(int position) { // Todo auto-generated method stub return position; } @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { // Todo auto-generated method stub VIEw row =null; if (convertVIEw==null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); row=inflater.inflate(R.layout.custom_row, parent, false); } else { row = convertVIEw } row.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { startActivity(new Intent((Activity) context, Workouts.class)); } }); TextVIEw TitleTextVIEw = (TextVIEw) row.findVIEwByID(R.ID.textVIEw1); ImageVIEw TitleImageVIEw = (ImageVIEw) row.findVIEwByID(R.ID.imageVIEw1); TitleTextVIEw.setText(planets[position]); TitleImageVIEw.setimageResource(images[position]); return row; } } }
解决方法:
==>在您的MainActivity中替换以下代码
public class MainActivity extends Activity implements OnItemClickListener { private DrawerLayout drawerLayout; private ListVIEw ListVIEw;private ActionbarDrawerToggle drawerListener; private MyAdapter MyAdapter; @OverrIDeprotected voID onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main); drawerLayout=(DrawerLayout) findVIEwByID(R.ID.drawerLayout); ListVIEw=(ListVIEw)findVIEwByID(R.ID.drawerList); MyAdapter=new MyAdapter(this); ListVIEw.setAdapter(MyAdapter); ListVIEw.setonItemClickListener(this); drawerListener= new ActionbarDrawerToggle(this, drawerLayout, R.drawable.Listmenu, R.string.drawer_open, R.string.drawer_close){ @OverrIDe public voID onDrawerClosed(VIEw drawerVIEw) { // Todo auto-generated method stub super.onDrawerClosed(drawerVIEw);}@OverrIDe public voID onDrawerOpened(VIEw drawerVIEw) { // Todo auto-generated method stub Toast.makeText(MainActivity.this, " Drawer Opened ", Toast.LENGTH_SHORT).show(); }}; drawerLayout.setDrawerListener(drawerListener); getActionbar().setHomebuttonEnabled(true); getActionbar().setdisplayHomeAsUpEnabled(true); } @OverrIDe public boolean onoptionsItemSelected(MenuItem item) { // Todo auto-generated method stubif(drawerListener.onoptionsItemSelected(item)) {return true; }return super.onoptionsItemSelected(item); } @OverrIDepublic voID onConfigurationChanged(Configuration newConfig) { // Todo auto-generated method stubsuper.onConfigurationChanged(newConfig);drawerListener.onConfigurationChanged(newConfig);} @OverrIDeprotected voID onPostCreate(Bundle savedInstanceState) {// Todo auto-generated method stubsuper.onPostCreate(savedInstanceState); drawerListener.syncState(); } @OverrIDe public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) {if (position == 0) { startActivity(new Intent((Activity) context, A.class)); } if (position == 1) { startActivity(new Intent((Activity) context, B.class)); } if (position == 2) { startActivity(new Intent((Activity) context, C.class)); } if (position == 3) { startActivity(new Intent((Activity) context, D.class)); } if (position == 4) { startActivity(new Intent((Activity) context, E.class)); } if (position == 5) { startActivity(new Intent((Activity) context, F.class)); } if (position == 6) { startActivity(new Intent((Activity) context, G.class)); } if (position == 7) { startActivity(new Intent((Activity) context, H.class)); } if (position == 8) { startActivity(new Intent((Activity) context, I.class)); } }public voID selectItem(int position) {ListVIEw.setItemChecked(position, true);}public voID setTitle(String Title){getActionbar().setTitle(Title);}class MyAdapter extends BaseAdapter {private Context context;String[] planets;int[] images = { R.drawable.home, R.drawable.workout, R.drawable.week, R.drawable.gallery, R.drawable.statistics, R.drawable.settings}; public MyAdapter(Context context) { this.context=context; planets=context.getResources().getStringArray(R.array.planets); }@OverrIDe public int getCount() { // Todo auto-generated method stubreturn planets.length; }@OverrIDepublic Object getItem(int position) {// Todo auto-generated method stub return planets[position]; }@OverrIDe public long getItemID(int position) {// Todo auto-generated method stubreturn position;} @OverrIDepublic VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {// Todo auto-generated method stubVIEw row =null;if(convertVIEw==null){ LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); row=inflater.inflate(R.layout.custom_row, parent, false);}else{ row=convertVIEw;}TextVIEw TitleTextVIEw=(TextVIEw) row.findVIEwByID(R.ID.textVIEw1); ImageVIEw TitleImageVIEw= (ImageVIEw) row.findVIEwByID(R.ID.imageVIEw1);TitleTextVIEw.setText(planets[position]);TitleImageVIEw.setimageResource(images[position]);return row; } } }
总结 以上是内存溢出为你收集整理的java – 如何用listView项打开不同的活动?全部内容,希望文章能够帮你解决java – 如何用listView项打开不同的活动?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)