Search code examples
androidandroid-activitytextviewandroid-custom-view

Set TextView Text from View class Not from Activity


This is my Activity class . Here I have a Textview.
I want to Set the TextView from View Class.

public class TestApp extends Activity 
{

  TextView   NameTxtView;
  CustomView  view;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.Main); 
         view                       = (CustomView)findViewById(R.id.customview);    

        NameTxtView  = (TextView) findViewById(R.id.nameTxtxVw);

   }

}

This is my View Class. Here i want to set the TextView Text. I can't set this Text on Activity. Because I am getting value on View class.

public  class CustomView extends View
{
    public CustomView(Context context, AttributeSet attrs) 
    {
          super(context, attrs); 
    } 

    @Override
    public void onDraw(Canvas canvas) 
    {
          NameTxtView.settext("Test");

    }
}

Any Idea how to do that?

thanks


Solution

  • Do this way

    TestApp.java

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    import com.example.demo.CustomView.CustmViewListener;
    
    public class TestApp extends Activity 
    {
    
      TextView   NameTxtView;
      CustomView  view;
    
       @Override
       public void onCreate(Bundle savedInstanceState)
       {
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.Main); 
             view   = (CustomView)findViewById(R.id.customview);    
    
            NameTxtView  = (TextView) findViewById(R.id.nameTxtxVw);
    
            view.setCustmViewListener(new CustmViewListener() {
    
                @Override
                public void onUpdateValue(String updatedValue) {
                    NameTxtView.setText(updatedValue);
                }
            });
    
       }
    
    }
    

    CustomView.java

    import android.content.Context;
    import android.graphics.Canvas;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class CustomView extends View {
    
        CustmViewListener custmViewListener;
    
        public CustmViewListener getCustmViewListener() {
            return custmViewListener;
        }
    
        public void setCustmViewListener(CustmViewListener custmViewListener) {
            this.custmViewListener = custmViewListener;
        }
    
        public CustomView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        public void onDraw(Canvas canvas) {
            if (getCustmViewListener() != null) {
                getCustmViewListener().onUpdateValue("passYourValueHere");
            }
    
        }
    
        public interface CustmViewListener {
            void onUpdateValue(String updatedValue);
        }
    }