所以这个问题有点难以解释,但基本上我想要的是列表视图的数组列表,但更改列表视图上的标题。因此,当用户看到列表视图时,它会说一件事,但会传递不同的信息。 这是我的代码:
//the string names
String names[] = { "item1", "item2"};
我有2个名为item1.java和item2.java的类 当单击一个列表项时,它会设置一个等于活动名称的类,并按以下方式打开它:
protected void onListItemClick(ListView lv, View v, int position, long id){
super.onListItemClick(lv, v, position, id);
String openClass = names[position];
try{
Class selected = Class.forName("com.example.example." + openClass);
Intent selectedIntent = new Intent(this, selected);
startActivity(selectedIntent);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
finish();
}
但是在listview中我不希望它说“item1”和“item2”....有没有什么方法可以像别名一样? 很抱歉,如果我的问题很难理解,我会尽力解释我需要帮助的内容,如果您对我的问题有任何疑问,请告诉我(感谢您的帮助
答案 0 :(得分:3)
您执行此操作的方式与制作任何自定义适配器的方式相同,例如应该显示图像而不是某些文本或除了某些文本之外的适配器。
例如,如果您的适配器是ArrayAdapter
,则创建一个子类,覆盖getView()
,然后按照您想要的方式执行所需的操作。
答案 1 :(得分:0)
您可以覆盖toString()
来执行此操作。见以下示例
public static class Alias {
String originalValue;
public Alias(String s) {
this.originalValue = s;
}
@Override
public String toString() {
return "What are you want to show";
}
}
String names[] = {"item1", "item2"};
Alias array[] = new Alias[names.length];
Alias array[0] = new Alias(names[0]);
Alias array[1] = new Alias(names[1]);
ArrayAdapter<Alias> adapter = new ArrayAdapter<Alias>(this, resId, array);
无论价值如何,这都会在每个列表视图中显示“你想要展示什么”。