2017-03-23 24 views
0

ランダムな数のボタンを生成しており、後で使用するためにそれぞれの固有のIDを設定する必要があります。私はView.generateViewID()を使用してIDを設定していますが、どのようにIDを取得できますか?ランダムに生成されたボタンのIDを生成する方法

代わりに、IDを変数に設定してボタンに番号を付けることができますが、ランダムなIDを何らかの形で生成する代わりに、毎回1ずつインクリメントします。

答えて

0

generateViewID()は、Rクラスで一意であることが保証されている整数を返します。

どうすればIDを取得できますか?

int generatedId = View.generateViewID(); 

今、あなたは任意のビューのIDとしてgeneratedIDを設定し、view.getId()を経由して、それを取り戻すことができます。

代わりに、IDを変数に設定してボタンに番号を付けることができます。ランダムなIDを生成する代わりに、毎回1ずつインクリメントします。

理論的には、そうすることができます。ほとんどの場合、問題はありません。しかし、あなたはRクラスで生成された別のIDとどのように衝突しないのでしょうか?生成されたidの型についての仮定をしないでください。今日はかなり巨大な数ですが、明日はアルゴリズムが変わるかもしれません。また、フレームワークはIDを生成するためのAPIを提供しますが、なぜそれを無視しますか?フレームワークが提案するパターンを採用する。

0

次のアプローチ以外にも、単純で簡潔なアプローチがあります。動的に追加されたコントロール(Button、Textview)の場合、そのコントロールの配列/リストを維持する必要があります。たとえば、など、ベースIDで選択/設定する必要があるIDを設定します。動的に追加されたボタンごとに1つずつ増やす必要があります(例:buttonBaseId += 1;)。

このアプローチは、複数のコントロールでも同様に実行できます。その場合、TextViewを動的に追加したいとします.1000から始まるTextviewベースIDを選択し、ランダムに追加されたテキストビューごとに1ずつ増やすことができます。

この方法に従うことで、idまたはindexのいずれかのポイントで、各リストから任意のコントロールを取得できます。

このようにして、ボタンの開始位置を制御します。これがあなたを助けることを願っています:)

関連する問題