雨季空灵 2016-06-03 13:57 采纳率: 50%
浏览 1187
已采纳

给ListView的每一项item设置响应事件转跳到相应Activity的问题。

可不可以做到不在onItemClick()方法中以switch的方法定义每一项item的intent目标,
而是在init的时候传入一个可以得到 nextActivity.class(需要转跳的activity的值),然后在onItemClick里写intent的时候只要get到那个值?

我试了一下,遇到了问题。
下面是我自定义的一个类

public class HomePageList {
        private String name;
        private int imageId;
        private Class<Activity> nextactivity;

        public HomePageList(String name, int imageId, Class<Activity> nextactivity) {
                this.name = name;
                this.imageId = imageId;
                this.nextactivity = nextactivity;
    }

        public String getName() {
                return name;
    }

        public int getImageId() {
                return imageId;
    }

        public Class<XzdtActivity> getNextactivity() {
                return nextactivity;
    }

}

这里是我的MainActivity

private List<HomePageList> homepagelist = new ArrayList<HomePageList>();
......
        listView.setOnItemClickListener(new OnItemClickListener(){
                public void onItemClick(AdapterView<?> parent,View view,int position,long id){
                        HomePageList homepage = homepagelist.get(position);
                        Intent intent = new Intent(MainActivity.this,homepage.getNextactivity());
                        startActivity(intent);
            }
        });
        /*在这里遇到问题了,我的下一个Activity是XzdtActivity,然而这样填写的话,他让我把自定义的HomePageList类中nextactivity的类型改成Class<XzdtActivity>,这样其他的Activity都不能传入了,这要怎么解决呢?*/
        private void initHomePages() {
                HomePageList itme1 = new HomePageList("小镇大厅", R.drawable.common_36_icon,XzdtActivity.class);
                homepagelist.add(itme1);
                .......
        }

请问能不能修改一下让这个方法做到可行的程度?

  • 写回答

4条回答 默认 最新

  • 雨季空灵 2016-06-04 06:35
    关注

    主Activity

     public class MainActivity extends Activity {
        private List<HomePageList> homepagelist = new ArrayList<HomePageList>();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
    
            init();
            HomePageAdapter homepageadapter = new HomePageAdapter(
                    MainActivity.this, R.layout.homepage_list, homepagelist);
            ListView listView= (ListView) findViewById(R.id.homepage);
            listView.setAdapter(homepageadapter);
    
            listView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    HomePageList homepage = homepagelist
                            .get(position);
                    Intent intent = new Intent(MainActivity.this, homepage
                            .getNextactivity());
                    startActivity(intent);
                }
            });
        }
    
        private void init() {
            HomePageList itme1 = new HomePageList("title1",
                    R.drawable.common_1_icon, activity1.class);
            homepagelist.add(itme1);
            HomePageList itme2 = new HomePageList("title2",
                    R.drawable.common_2_icon, activity2.class);
            homepagelist.add(itme2);
            HomePageList itme3 = new HomePageList("title3", R.drawable.common_3_icon,
                    activity3.class);
            homepagelist.add(itme3);
            HomePageList itme4 = new HomePageList("title4", R.drawable.common_4_icon,
                    activity4.class);
            homepagelist.add(itme4);
        }
    
    }   
    

    自定义的HomePagelist类

     public class HomePageList {
        private String name;
        private int imageId;
        private Class<?> nextactivity;
    
        public HomePageList(String name, int imageId, Class<?> nextactivity) {
            this.name = name;
            this.imageId = imageId;
            this.nextactivity = nextactivity;
        }
    
        public String getName() {
            return name;
        }
    
        public int getImageId() {
            return imageId;
        }
    
        public Class<?> getNextactivity() {
            return nextactivity;
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样