Add Together With Take Away Persuasion Dynamically, Proceed Rail Of Youngster Views

Posted on

I convey a former event of “Add in addition to Remove sentiment dynamically“. Somebody enquire how the Remove push clit buy the farm on rail of the views. So I alter the event to explicate inward to a greater extent than details.

In this example, when user click on the Add button, it volition exercise a kid View, addView. The addView convey a Button, buttonRemove. The buttonRemove convey its ain OnClickListener object. The OnClickListener object nurture to the specified addView when it is created.

That way the OnClickListener object of the buttonRemove inward the get-go kid view(“abc”) non the same object inward the minute kid view(“abcdef”), non the same object inward the tertiary kid view(“abcdefghi”)…All convey its ain private OnClickListener object. And each OnClickListener object nurture to a specified addView object. Such that it tin flaming buy the farm on rail of the kid Views, addView.


MainActivity.java

package com.blogspot.android_er.androiddynamicview;  import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.method.ScrollingMovementMethod; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView;  world degree MainActivity extends AppCompatActivity {      EditText textIn;     Button buttonAdd;     LinearLayout container;     TextView reList, info;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          textIn = (EditText)findViewById(R.id.textin);         buttonAdd = (Button)findViewById(R.id.add);         container = (LinearLayout)findViewById(R.id.container);         reList = (TextView)findViewById(R.id.relist);         information = (TextView)findViewById(R.id.info);         info.setMovementMethod(new ScrollingMovementMethod());          buttonAdd.setOnClickListener(new View.OnClickListener(){             @Override             world void onClick(View v) {                 LayoutInflater layoutInflater =                         (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);                 terminal View addView = layoutInflater.inflate(R.layout.row, null);                 TextView textOut = (TextView)addView.findViewById(R.id.textout);                 textOut.setText(textIn.getText().toString());                 Button buttonRemove = (Button)addView.findViewById(R.id.remove);                  terminal View.OnClickListener thisListener = novel View.OnClickListener(){                     @Override                     world void onClick(View v) {                         info.append("thisListener called:\t" + this + "\n");                         info.append("Remove addView: " + addView + "\n\n");                         ((LinearLayout)addView.getParent()).removeView(addView);                          listAllAddView();                     }                 };                  buttonRemove.setOnClickListener(thisListener);                 container.addView(addView);                  info.append(                         "thisListener:\t" + thisListener + "\n"                                 + "addView:\t" + addView + "\n\n"                 );                  listAllAddView();             }         });     }      private void listAllAddView(){         reList.setText("");          int childCount = container.getChildCount();         for(int i=0; i<childCount; i++){             View thisChild = container.getChildAt(i);             reList.append(thisChild + "\n");         }     } }  

layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="horizontal"     android:padding="16dp"     tools:context="com.blogspot.android_er.androiddynamicview.MainActivity">       <LinearLayout         android:layout_width="0dp"         android:layout_height="match_parent"         android:layout_weight="1"         android:orientation="vertical">          <RelativeLayout             android:layout_width="match_parent"             android:layout_height="wrap_content">              <Button                 android:id="@+id/add"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:layout_alignParentRight="true"                 android:text="Add" />              <EditText                 android:id="@+id/textin"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:layout_alignParentLeft="true"                 android:layout_toLeftOf="@id/add" />         </RelativeLayout>          <LinearLayout             android:id="@+id/container"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="vertical"></LinearLayout>      </LinearLayout>      <LinearLayout         android:layout_width="0dp"         android:layout_height="match_parent"         android:layout_weight="1"         android:orientation="vertical">          <TextView             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_horizontal"             android:autoLink="web"             android:text="https://rootandroid.org//"             android:textStyle="bold" />          <TextView             android:id="@+id/relist"             android:layout_width="match_parent"             android:layout_height="0dp"             android:layout_weight="1"             android:textStyle="bold"             android:background="#E0E0E0"/>         <TextView             android:id="@+id/info"             android:layout_width="match_parent"             android:layout_height="0dp"             android:layout_weight="1"             android:textStyle="italic"             android:background="#D0D0D0"             android:gravity="bottom"/>      </LinearLayout> </LinearLayout>  

layout/row.xml, the layout of the kid views.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="wrap_content">     <Button         android:id="@+id/remove"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentRight="true"         android:text="Remove"/>     <TextView         android:id="@+id/textout"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_alignParentLeft="true"         android:layout_toLeftOf="@id/remove"/> </RelativeLayout> 

 Somebody enquire how the Remove push clit buy the farm on rail of the views Add in addition to Remove sentiment dynamically, buy the farm on rail of kid viewsDownload the files (Android Studio Format) .

It’s another approach to part a mutual OnClickListener betwixt all buttonRemove.

more:
– Add in addition to Remove sentiment dynamically, amongst EditText/AutoCompleteTextView inside