Skip to content

cant create a text view #54

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions