2012-04-18 10 views
1

私は単純なアンドロイドのUIデザインの問題だと思っていますが、数日間は円で回っています。私はXMLをダウンロードしてアンドロイド・アプリケーションのフォームにXMLを表示するRESTサービスを持っています。私はウェブページを構築しており、これをアンドロイドやウェブサイトからRESTサービスに送信するのと同じオプション、同じオプションを使ってこれを模倣しています。私は私が持っていたアンドロイドに似た何かをしたかったAlertDialogとSpinner対ListView

<select name="planet"><option value="0">Mercury</option></select> 

:として、たとえば、私は惑星のオプションを表示できるようにHTMLで、私は簡単に、様々なID /表示項目のチェックボックスグループとラジオボタン/ドロップダウンを作成することができますIDの1つと、表示するユーザーフレンドリーなテキストのペアです。だから私はandroid.util.Pairを使用して、アダプタを作成することにしました:

public class PairView extends Pair<String, String> { 
    public PairView(String first, String second) { 
     super(first, second); 
    } 

    public String toString() { 
     return second; 
    } 
    } 

    public class PairAdapter extends ArrayAdapter<PairView> { 
    } 

だから今はpair.firstに私のIDを置くことができ、何がpair.secondでユーザに表示します。

私の問題は、これらのオプションのうちのいくつかがシングルセレクトであり、いくつかはマルチセレクトであるということです。 htmlでは、これは問題ではなく、複数の場合はチェックボックスグループを使用し、1つの選択の場合はラジオボタン/ドロップダウンを使用します。しかし、アンドロイドではそれほど単純ではないようです。私はアダプターにスピナーを使用しようとしましたが、スピナーは単一の選択のみを許可しているようです。 AlertDialog.Builderは単一選択と複数選択を可能にしますが、興味深いことに、単一選択のためだけに複数選択のためのアダプタを使用するオプションはありません。

私が本当に望んでいるのは、すべてのオプションを一貫して見ていると思います。ラジオボタンは単一の選択肢と複数の選択肢のために表示され、アダプタを介して表示されるので、選択したアイテムのペアからIDを取得できます。

どのようなアプローチをとるべきですか?マルチセレクション用にコードを追加したカスタムスピナー? AlertDialog.Builderを使用して、何とかマルチセレクション用のアダプタを使用するようにしますか?単純なアラートを作成し、それにリストビューをラップします。 (うまくいけば)もっと簡単な別のオプション?

私はここで何か非常に基本的なものが欠けているように感じます。

答えて

1

私が作ったアプリでも同様の状況がありましたので、私が選んだアプリを共有しました。私はさまざまなタイプの質問をしていました。それに応じて私は自分の活動の中で物事を取り除いて追加しました。ラジオボタンの場合は、その要素で使用しました。多肢選択式の質問の場合、私はチェックボックスベースのビューを望んでいたので、レイアウト内に空を追加し、コードにCheckBoxを追加しました。

ラジオボタンとチェックボックスの場合、setTextで表示テキストを設定し、任意のオブジェクト/値をタグとして追加できます。

CheckBox option = new CheckBox(MyActivity.this); 
option.setText("Option 1"); 
option.setTag(10); 

後で、選択したオプションを取得するとき、あなたは、単にそのタグを取得し、その値を使用することができますについて:だから私は何を使用すると、このようなものでした。

これは私が簡単に見つけた1つの方法です。これが役に立ったらいいですか

+0

これは私を助けると思う。チップをありがとう、私はsetTagを認識していない、それを使用して私のためのものを簡素化する必要があります。 – mvsjes2

+0

setTagには注意してください...厳密に型指定された言語なので、人々はjavaが大好きです。 Objectを返すメソッドは問題を求めています。 –