2

このIDシステム全体がAndroidでどのように機能するかについて多くの質問をしたいと思います。ビューのドキュメントを調べましたが、説明が浅すぎて好みに合いませんでした。

  1. 使用時にIDE(Eclipse / Netbeans)がIDを生成するパターンはありますandroid:id="@+id/..."か?それとも完全にランダムですか?

  2. プログラムでIDを設定した場合、それはContextクラスfindViewById()関数によって検出されますか?

  3. 前の質問の答えが「はい」の場合、大量のビューを作成したいが、後で識別できるように個別のIDを持たせたい場合は、どちらを使用するのがよいでしょうか。(この質問に答えるには、最初の2つの答えを知っておくと非常に便利です)

    たとえば、可能な限り最大の範囲でランダムIDを生成します。

    Random random = new Random();
    for(int i=0; i<100; i++)
    {
        View view = new View(someContext);
        view.setId(random.nextInt(Integer.MAX_VALUE));
    }
    

    または、IDをある種の順序で設定します。次に例を示します。

    final int addToId = 5670;
    for(int i=0; i<100; i++)
    {
        View view = new View(someContext);
        view.setId(i+addToId);
    }
    
  4. また、たとえばLayoutInflaterを使用ListViewして、リスト内のすべてのアイテムに対して事前定義されたxmlレイアウトを使用してデータを設定すると、どうなるかを知りたいと思います。getView()次に、関数でサブビューを取得しますfindViewById()。したがって、リストアイテム全体で同一のビューはすべて同じIDを持っていると思います。もしそうなら、それでは、tag 属性を使用して、膨らんだレイアウトのアイテムを区別することをお勧めしますか?

これらの質問に対する明確な説明をいただければ幸いです。

4

1 に答える 1

1
  1. @ + id/....アプリケーションの名前空間内に存在するid値を作成します。これを、android名前空間にある@ android:id/....と比較してください。

  2. コードでIDを設定し、ビュー要素をレイアウトに追加すると、コードを介してアクセスできるようになります。xmlから参照することはできません

  3. IDを生成するためにランダムを使用したいかどうかわかりませんか?シーケンシャルの方が良いと思いますが、それでもランダムIDのポイントは何ですか?参照しているビューをどのようにして知ることができますか?

  4. 間違いなくタグオプションを使用し、リストのスクロールをスムーズにするためにViewHolderパターンを使用するようにしてください。IDにアクセスする必要がある場合は、ビューホルダークラスにIDを追加できますが、リストへの入力に使用されているデータセットを介してIDを使用できます。簡単に検索すると、このための例がたくさん見つかります。

于 2012-08-09T09:25:01.503 に答える