ランダムな数のボタンを生成しており、後で使用するためにそれぞれの固有のIDを設定する必要があります。私はView.generateViewID()
を使用してIDを設定していますが、どのようにIDを取得できますか?ランダムに生成されたボタンのIDを生成する方法
代わりに、IDを変数に設定してボタンに番号を付けることができますが、ランダムなIDを何らかの形で生成する代わりに、毎回1ずつインクリメントします。
ランダムな数のボタンを生成しており、後で使用するためにそれぞれの固有のIDを設定する必要があります。私はView.generateViewID()
を使用してIDを設定していますが、どのようにIDを取得できますか?ランダムに生成されたボタンのIDを生成する方法
代わりに、IDを変数に設定してボタンに番号を付けることができますが、ランダムなIDを何らかの形で生成する代わりに、毎回1ずつインクリメントします。
generateViewID()
は、R
クラスで一意であることが保証されている整数を返します。
どうすればIDを取得できますか?
int generatedId = View.generateViewID();
今、あなたは任意のビューのIDとしてgeneratedID
を設定し、view.getId()
を経由して、それを取り戻すことができます。
代わりに、IDを変数に設定してボタンに番号を付けることができます。ランダムなIDを生成する代わりに、毎回1ずつインクリメントします。
理論的には、そうすることができます。ほとんどの場合、問題はありません。しかし、あなたはR
クラスで生成された別のIDとどのように衝突しないのでしょうか?生成されたidの型についての仮定をしないでください。今日はかなり巨大な数ですが、明日はアルゴリズムが変わるかもしれません。また、フレームワークはIDを生成するためのAPIを提供しますが、なぜそれを無視しますか?フレームワークが提案するパターンを採用する。
次のアプローチ以外にも、単純で簡潔なアプローチがあります。動的に追加されたコントロール(Button、Textview)の場合、そのコントロールの配列/リストを維持する必要があります。たとえば、など、ベースIDで選択/設定する必要があるIDを設定します。動的に追加されたボタンごとに1つずつ増やす必要があります(例:buttonBaseId += 1;
)。
このアプローチは、複数のコントロールでも同様に実行できます。その場合、TextView
を動的に追加したいとします.1000から始まるTextviewベースIDを選択し、ランダムに追加されたテキストビューごとに1ずつ増やすことができます。
この方法に従うことで、idまたはindexのいずれかのポイントで、各リストから任意のコントロールを取得できます。
このようにして、ボタンの開始位置を制御します。これがあなたを助けることを願っています:)