3

私は現在、phpサーバーがjson形式で提供するスキーマに基づいて入力フィールドを動的に生成するAndroidアプリケーションに取り組んでいます。Androidでフィールドを動的に作成する方法を知っています。

EditText、Spinner、RadioGroup、RadioButton、CheckBox、DatePicker、TimePicker、Camera Image、User Signatureなどの入力タイプが多数あるため、jsonスキーマ形式の提案をいくつか取得したいと思います。それらにはデフォルト値がある場合があり、Spinnerには複数の値があります値、DatePicker と TimePicker には最大と最小の制限があります。EditText 入力タイプは、数値、小数、テキスト、複数行などと異なる場合があります。

私はjsonにあまり興味がなく、Androidで簡単に解析できるはずなので、jsonスキーマに関するいくつかの提案がより役立ちます。

4

1 に答える 1

2

これは興味深いプロジェクトです。Android で行われているのとまったく同じモデル クラスの階層に従うことをお勧めします。各モデル クラスは、作成されたビューに固有です。したがって、たとえば、のEditTextModelようなフィールドが含まれますが、単になどを含めることができます。必要なのは、 Google inputTypegsonライブラリと gson 用のカスタム アダプター コードだけです。TextViewModeltext

詳細: json は次のようになります。

{
"views": [
    {
        "class": "com.vj.TextViewModel",
        "properties": {
            "text": "hello world",
            "textColor": "#000000"
        }
    },
    {
        "class": "com.vj.EditTextModel",
        "properties": {
            "inputType": "number",
            "textSize": 20
        }
    }
]
}

TextViewModel クラスを使用:

public class TextViewModel implements Viewable{
    String text;
    String textColor;

    @Override
    public View getView(Context context){
        // generate and return view
        return view;
    }
}

および EditTextModel クラス:

public class EditTextModel implements Viewable{
    String inputType;
    int textSize;

    @Override
    public View getView(Context context){
        // generate and return view
        return view;
    }
}

どこ

public interface Viewable{
    public View getView(Context context);
}

一般的な json シリアライゼーション/デシリアライゼーションおよびアダプター コードに関する限り、このコードを注意深く見て調べてください。上記で生成した同様のモデルで求めていることを正確に実行します。https://stackoverflow.com/a/8683689/1112882

json が解析され、ArrayListまたは Collection of Viewable の準備が整ったら、反復して を呼び出しますgetView(context)。乾杯... :)

于 2013-10-05T22:23:21.863 に答える