プログラムでビュー(スピナー、エディットボックス、日付ピッカー)を作成しています(以前の正確な数とタイプはわかりません)。送信ボタンをクリックすると、ビューからすべての値を取得する必要があります。また、どの値がどのビューに対応しているかを知ることもできます。
最終的には、これらすべての値を別のアクティビティに渡す必要があります。
この機能を実現するにはどうすればよいですか。
プログラムでビュー(スピナー、エディットボックス、日付ピッカー)を作成しています(以前の正確な数とタイプはわかりません)。送信ボタンをクリックすると、ビューからすべての値を取得する必要があります。また、どの値がどのビューに対応しているかを知ることもできます。
最終的には、これらすべての値を別のアクティビティに渡す必要があります。
この機能を実現するにはどうすればよいですか。
クリック ハンドラーは、クリックされたビューへの参照を渡します。その値を取得するために呼び出すだけです。
作成したすべてのものを実際に見て、すべての値を確認する必要がある場合は、それらすべてを何らかのデータ構造 (ハッシュ、リストなど) に格納します。どれがそのデータ構造の一部であるべきかを追跡します。しかし、いつ、なぜそれらにアクセスする必要があるのか、そしてそれらが何のために使用されるのかを知らなければ、より詳細な解決策を実際に提案することはできません.
yout ビューを含むリストが必要ない場合 (R9j で提案されているように、これは完全に優れた方法です)、次を使用してアクティビティのルート ビューを取得することもできます。
View rootLayout= ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0)
このビューには、追加したすべてのビューが表示されるため、子ビューのリストを確認できます
for(int i=0; i<rootLayout.getChildCount(); i++)
{
View child = rootLayout.getChildAt(i);
if(child instanceof TextView)
{
int id= child.getId();
if(id>500) //whatever check makes sense to you given the way you use ids
{
String content = ((TextView) child).getEditableText().toString();
}
}
}
この場合、私は TextView をチェックしましたが、ビューを作成するときにビューに ID を与えることで、どのビューがどの情報を持つべきかを認識することができ、他のタイプも可能です。そのためにタグを使用することもできます。
名前にかかわらず、ビューの ID は一意である必要はありません。