可不可以做到不在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);
.......
}
请问能不能修改一下让这个方法做到可行的程度?
主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;
}
}
如你楼上回复,不响应点击事件如何跳转?
已经解决了,把自定义类中的
private Class改成private Class<?>就可以成功了,虽然不是很清楚原理