単純な Android UI デザインの問題だと思っていたものを手に入れましたが、数日間ぐるぐる回っています。XML をダウンロードして Android アプリのフォームに XML を表示する REST サービスがあります。私はWebページを構築しており、Android、同じオプション、同じURLがAndroidまたはWebページからRESTサービスに送信されることでこれを模倣しています。HTML を使用すると、さまざまな ID/表示項目のチェックボックス グループとラジオボタン/ドロップダウンを簡単に作成できるため、たとえば、惑星オプションを次のように表示できます。
<select name="planet"><option value="0">Mercury</option></select>
1 つは id で、もう 1 つは表示するユーザーフレンドリーなテキストのペアの値を持つ Android で同様のことをしたかったのです。そこで、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> {
}
これで、自分の ID を pair.first に入れ、ユーザーに何を表示するかを pair.second に入れることができます。
私の問題は、これらのオプションの一部が単一選択になり、一部が複数選択になることです。HTML では、これは問題ではありません。複数選択にはチェックボックス グループを使用し、単一選択にはラジオ ボタン/ドロップダウンを使用します。ただし、Androidでは、それほど単純ではないようです。アダプターに Spinners を使用してみましたが、Spinner では単一選択しかできないようです。AlertDialog.Builder では、単一選択と複数選択が可能ですが、不思議なことに、複数選択用のアダプターを使用するオプションが表示されません。単一選択用です。
私が本当に望んでいるのは、すべてのオプションの一貫した外観であり、単一選択にはラジオボタンが表示され、複数選択にはチェックボックスが表示され、アダプターを介して、選択したアイテムのペアから ID を取得できるようにすることだと思います。
どのようなアプローチを使用する必要がありますか? 複数選択用のコードが追加されたカスタム スピナー? AlertDialog.Builder で、どうにかして複数選択用のアダプターを使用しますか? 単純な Alert を作成して ListView をラップするだけですか? (うまくいけば)より簡単な別のオプションはありますか?
ここで非常に基本的な何かが欠けているように感じます。