2

したがって、この質問は説明が少し難しいですが、基本的にはリストビューの配列リストを持ち、リストビューのタイトルを変更したいのです。そのため、ユーザーがリストビューを見ると、1 つのことを言いますが、別の情報が渡されます。これが私のコードです:

//the string names
String names[] = { "item1", "item2"};

item1.java と item2.java という 2 つのクラスがあり、1 つの listitem をクリックすると、アクティビティ名に等しいクラスが設定され、次のように開きます。

    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();
}

しかし、リストビューでは、「item1」と「item2」とは言いたくありません....エイリアスなどを作成する方法はありますか? 私の質問が理解しにくい場合は申し訳ありませんが、助けが必要なことを説明するために最善を尽くしました。私の質問について質問がある場合はお知らせください(: 助けてくれてありがとう

4

2 に答える 2

3

これは、テキストの代わりに、またはテキストに加えて画像を表示するカスタム アダプターなど、カスタム アダプターを作成する場合と同じ方法で行います。

たとえば、アダプターが の場合ArrayAdapter、サブクラスを作成してオーバーライドgetView()し、そこで必要なことを行って、行を希望どおりにフォーマットします。

于 2013-05-25T01:11:13.390 に答える
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);

これにより、値が何であれ、すべてのリストビューに「何を表示したいのか」が表示されます。

于 2013-05-25T01:25:15.230 に答える