如何使listView说一件事,但传递不同的数据

时间:2013-05-25 00:30:38

标签: java android listview

所以这个问题有点难以解释,但基本上我想要的是列表视图的数组列表,但更改列表视图上的标题。因此,当用户看到列表视图时,它会说一件事,但会传递不同的信息。 这是我的代码:

//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”....有没有什么方法可以像别名一样? 很抱歉,如果我的问题很难理解,我会尽力解释我需要帮助的内容,如果您对我的问题有任何疑问,请告诉我(感谢您的帮助

2 个答案:

答案 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);

无论价值如何,这都会在每个列表视图中显示“你想要展示什么”。