1

クリックするListActivityと、クリックされた表示テキストが表示されます。一意の識別子を使用するなど、より良い方法はありますか?

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="adjustments">
        <item>Item 1</item>
        <item>Item 2</item>
        <item>Item 3</item>
    </string-array>
</resources>



私はコードとしてこれを持っています:

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    String[] adjustments = getResources().getStringArray(R.array.adjustments);
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, adjustments));
    getListView().setTextFilterEnabled(true);
}

protected void onListItemClick(ListView l, View v, int position, long id){
    super.onListItemClick(l, v, position, id);
    Intent intent = new Intent();
    Bundle bundle = new Bundle();
    try{
        bundle.putString("adjustment", l.getItemAtPosition(position).toString());
        intent.putExtras(bundle);
        setResult(RESULT_OK, intent);
    }catch(Exception e){
        setResult(RESULT_CANCELED, intent);
    }
    finish();
}

私が次にやりたいことは、次に何をすべきかを決定するテキストを取得するのではなく、各アイテムに一意の識別子を与えることです。それはまったく可能ですか?各オプションには、リフレクションを使用して一度クリックすると同じメソッドが呼び出されるため、何百もの if/else ステートメントを実行して何がクリックされたかを確認する代わりに、メソッドを一度呼び出すことができれば、非常に役立ちます!

4

2 に答える 2

0

私がしたことは、リフレクションを使用してクラスを呼び出すために戻りテキストを使用したことです。したがって、返されたテキストがAdjust RGB次の場合は、スペースを削除してクラスを開始AdjustRGBし、実装に基づいて関数を実行します。

于 2012-11-13T16:04:08.913 に答える
0

位置を使用できます。項目は毎回同じ順序であるため、 に渡される位置引数に基づいて何を行うかを決定できますonListItemClick

他のオプションは、それぞれに一意の ID を与えるカスタム アダプターを定義することですが、リストがあまり変わらない場合、位置はおそらく同じように機能します。

于 2012-11-06T16:34:18.797 に答える