Skip to content

cant create a text view #54

@mgood7123

Description

@mgood7123

KOTLIN:

package com.example.libkeyboard2

import android.content.Intent
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.view.View
import android.view.WindowManager
import android.widget.LinearLayout
import android.widget.TextView
import com.example.libjson.LibJSON
import com.google.gson.*
import com.avocarrot.json2view.DynamicView
import com.avocarrot.json2view.DynamicViewId
import kotlinx.android.synthetic.main.activity_main.view.*
import org.json.JSONObject

class MainActivity : AppCompatActivity() , View.OnClickListener{

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//        setContentView(R.layout.x)
//        setContentView(R.layout.activity_main)
//        val textView = findViewById(R.id.text_view) as TextView
//        textView.setMovementMethod(ScrollingMovementMethod())
//        LibJSON().Test_Lib { x -> textView.setText(textView.text.toString() + x) }

        // R.layout.activity_main as JSON

/*
        // create core view
        val VIEW = LibJSON()
        // create sub view
        val VIEW_TEXT = LibJSON()
        // create properties
        val VIEW_properties1 = LibJSON()
        val VIEW_properties2 = LibJSON()
        val VIEW_properties3 = LibJSON()
        val VIEW_TEXT_properties1 = LibJSON()
        val VIEW_TEXT_properties2 = LibJSON()
        val VIEW_TEXT_properties3 = LibJSON()
        val VIEW_TEXT_properties4 = LibJSON()
        // assign properties
        VIEW_properties1.add_value_as_vararg("name", "layout_hight", "type", "dimen", "value", "match_parent")
        VIEW_properties2.add_value_as_vararg("name", "layout_width", "type", "dimen", "value", "match_parent")
        VIEW_properties3.add_value_as_vararg("name", "orientation", "type", "string", "value", "vertical")
        VIEW_TEXT_properties1.add_value_as_vararg("name", "layout_width", "type", "dimen", "value", "match_parent")
        VIEW_TEXT_properties2.add_value_as_vararg("name", "layout_margin", "type", "dimen", "value", "16p")
        VIEW_TEXT_properties3.add_value_as_vararg("name", "scrollbars", "type", "string", "value", "vertical")
        VIEW_TEXT_properties4.add_value_as_vararg("name", "text", "type", "string", "value", "")
        // assign core view
        VIEW.add_value_as_vararg("widget", "LinearLayout", "properties")
        VIEW.add_array(VIEW_properties1, VIEW_properties2, VIEW_properties3)
        VIEW.add_name("views")
        VIEW.add_array(VIEW_TEXT)
        // assign core sub view
        VIEW_TEXT.add_value_as_vararg("widget", "text_view", "properties")
        VIEW_TEXT.add_array(VIEW_TEXT_properties1, VIEW_TEXT_properties2, VIEW_TEXT_properties3, VIEW_TEXT_properties4)
        VIEW_TEXT.add_name("views")
        VIEW_TEXT.add_array()
*/

        val DEMO = JSONObject("""
            {
	"widget": "android.widget.RelativeLayout",
	"properties": [{
		"name": "background",
		"type": "color",
		"value": "#919191"
	},
	{
		"name": "layout_width",
		"type": "dimen",
		"value": "match_parent"
	},
	{
		"name": "layout_height",
		"type": "dimen",
		"value": "match_parent"
	},
	{
		"name": "padding",
		"type": "dimen",
		"value": "10dp"
	}],
	"views": [{
		"widget": "android.widget.LinearLayout",
		"properties": [{
			"name": "layout_width",
			"type": "dimen",
			"value": "90%"
		},
		{
			"name": "layout_height",
			"type": "dimen",
			"value": "wrap_content"
		},
		{
			"name": "background",
			"type": "color",
			"value": "#ffffff"
		},
		{
			"name": "layout_centerInParent",
			"type": "boolean",
			"value": "true"
		},
		{
			"name": "orientation",
			"type": "string",
			"value": "vertical"
		}],
		"views": [{
			"widget": "android.widget.TextView",
			"properties": [{
				"name": "id",
				"type": "",
				"value": "testClick"
			},
			{
				"name": "layout_width",
				"type": "dimen",
				"value": "match_parent"
			},
			{
				"name": "layout_height",
				"type": "dimen",
				"value": "wrap_content"
			},
			{
				"name": "background",
				"type": "color",
				"value": "#ffffff"
			},
			{
				"name": "gravity",
				"type": "string",
				"value": "center"
			},
			{
				"name": "text",
				"type": "string",
				"value": "Try to click"
			},
			{
				"name": "gravity",
				"type": "",
				"value": "center"
			},
            {
                "name": "padding",
                "type": "dimen",
                "value": "5dp"
            },
			{
				"name": "textColor",
				"type": "color",
				"value": "#919191"
			}]
		},
		{
			"widget": "android.widget.TextView",
			"properties": [{
				"name": "id",
				"type": "",
				"value": "adTitle"
			},
			{
				"name": "layout_width",
				"type": "dimen",
				"value": "wrap_content"
			},
			{
				"name": "layout_height",
				"type": "dimen",
				"value": "wrap_content"
			},
			{
				"name": "background",
				"type": "color",
				"value": "#ffffff"
			},
			{
				"name": "text",
				"type": "string",
				"value": "Hello AVOCARROT!"
			},
			{
				"name": "layout_gravity",
				"type": "string",
				"value": "center"
			},
			{
				"name": "textSize",
				"type": "dimen",
				"value": "16sp"
			},
		    {
				"name": "drawableLeft",
				"type": "base64",
				"value": "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"
			},
            {
                "name": "padding",
                "type": "dimen",
                "value": "5dp"
            },
            {
                "name": "gravity",
                "type": "string",
                "value": "center"
            },
			{
				"name": "textColor",
				"type": "color",
				"value": "#1f91f7"
			}]
		},
		{
			"widget": "android.widget.ImageView",
			"properties": [{
				"name": "id",
				"type": "",
				"value": "adImage"
			},
			{
				"name": "layout_width",
				"type": "dimen",
				"value": "wrap_content"
			},
			{
				"name": "layout_height",
				"type": "dimen",
				"value": "wrap_content"
			},
			{
				"name": "scaleType",
				"type": "dimen",
				"value": "fit_Center"
			},
			{
				"name": "adjustViewBounds",
				"type": "boolean",
				"value": "true"
			},
		    {
				"name": "src",
				"type": "ref",
				"value": "sample"
			},
			{
				"name": "background",
				"type": "color",
				"value": "#228877"
			}]
		},
		{
			"widget": "android.widget.TextView",
			"properties": [{
				"name": "id",
				"type": "",
				"value": "adCTA"
			},
			{
				"name": "layout_width",
				"type": "dimen",
				"value": "match_parent"
			},
			{
				"name": "layout_height",
				"type": "dimen",
				"value": "wrap_content"
			},
			{
				"name": "background",
				"type": "color",
				"value": "#ffffff"
			},
			{
				"name": "text",
				"type": "string",
				"value": "LearnMore"
			},
			{
				"name": "padding",
				"type": "dimen",
				"value": "5dp"
			},
			{
				"name": "textSize",
				"type": "dimen",
				"value": "16sp"
			},
            {
                "name": "padding",
                "type": "dimen",
                "value": "7.5dp"
            },
            {
                "name": "gravity",
                "type": "string",
                "value": "center"
            },
			{
				"name": "textColor",
				"type": "color",
				"value": "#1f91f7"
			}]
		}]
	}]
}
        """)
        // use a static JSON string for now
        val K = JSONObject("""
            {
                "widget": "android.widget.LinearLayout",
                "properties": [
                  {
                    "name": "layout_hight",
                    "type": "dimen",
                    "value": "match_parent"
                  },
                  {
                    "name": "layout_width",
                    "type": "dimen",
                    "value": "match_parent"
                  },
                  {
                    "name": "orientation",
                    "type": "string",
                    "value": "vertical"
                  }
                ],
                "views": [
                  {
                    "type": "android.widget.TextView",
                    "properties": [
                      {
                        "name": "id",
                        "type": "",
                        "value": "text_view"
                      },
                      {
                        "name": "layout_width",
                        "type": "dimen",
                        "value": "match_parent"
                      },
                      {
                        "name": "layout_margin",
                        "type": "dimen",
                        "value": "16p"
                      },
                      {
                        "name": "scrollbars",
                        "type": "string",
                        "value": "vertical"
                      },
                      {
                        "name": "text",
                        "type": "string",
                        "value": ""
                      }
                    ],
                    "views": []
                  }
                ]
            }
          """)

        // MY CODE, FAILS
        /* create dynamic view and return the view with the holder class attached as tag */
        val sampleView : View? = DynamicView.createView(this, K, SampleViewHolder_TextView::class.java)
        if (sampleView == null) throw Exception("sampleView is null")
        setContentView(sampleView)
        val sampleTextView : TextView? = (sampleView.tag as SampleViewHolder_TextView).TEXTVIEW
        if (sampleTextView == null) throw Exception("sampleTextView is null") // FAILS HERE

        sampleTextView.setMovementMethod(ScrollingMovementMethod())
//        VIEW.print_object_pretty { x -> sampleTextView.setText(sampleTextView.text.toString() + x) }
//        VIEW.print_object_pretty{x -> throw Exception(x)}

        /* DEMO CODE, WORKS
        /* create dynamic view and return the view with the holder class attached as tag */
        val sampleView : View? = DynamicView.createView(this, DEMO, SampleViewHolder_View::class.java)
        if (sampleView == null) throw Exception("sampleView is null")
        setContentView(sampleView)

        /* add Layout Parameters in just created view and set as the contentView of the activity */
        sampleView.layoutParams = WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
        */

    }

    override fun onClick(v: View) {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("http://www.avocarrot.com/")))
    }

    /* Constructor must be public */
    class SampleViewHolder_TextView {
        /* we need the View with id testClick */
        @DynamicViewId(id = "text_view")
        var TEXTVIEW: TextView? = null
    }

    /* Constructor must be public */
    class SampleViewHolder_View {
        /* we need the View with id testClick */
        @DynamicViewId(id = "testClick")
        var clickableView: View? = null
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions