Linearlayout 을 컨테이너로 활용해서 별도의 View를 컨테이너에 삽입하는 기능.

 

통상적으로 리스트 뷰로 사용하지 않지만 테스트 예제가 리스트로 많이들 해놔서 동일하게 구현했음.

 

- AddViewActivity 리스트로 사용할 컨테이너 xml이고 리스트에 스크롤만 추가했음.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".AddViewActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

        <LinearLayout
            android:id="@+id/addview_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
        </LinearLayout>
    </ScrollView>

</LinearLayout>

 

- 리스트의 item 으로 사용할 addview_item xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#3F51B5">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="2dp"
        android:background="#00ff00"
        >

        <TextView
            android:id="@+id/car_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="20dp" />

        <TextView
            android:layout_width="1dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_gravity="center"
            android:background="#ffffff" />

        <TextView
            android:id="@+id/car_engine"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="20dp" />

    </LinearLayout>

</LinearLayout>

 

- AddViewActivity 

     . 컨테이너로 사용할 LinearLayout

        LinearLayout container = findViewById(R.id.addview_container);

     . Item 으로 사용할 View xml 가져오기
        LayoutInflater layoutInflater = LayoutInflater.from(AddViewActivity.this);

        View itemView = layoutInflater.inflate(R.layout.addview_item, null, false);

class Car {
    public String carName;
    public String carEndine;

    public Car(String carName, String carEndine) {
        this.carName = carName;
        this.carEndine = carEndine;
    }
}
public class AddViewActivity extends AppCompatActivity {

    private ArrayList<Car> carArrayList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_view);

        carArrayList = new ArrayList<>() {{
            add(new Car("캐스퍼 터보", "1.0 터보"));
            add(new Car("캐스퍼 일반", "1.0"));
            add(new Car("아반떼", "1.6"));
            add(new Car("아반떼N", "2.0 터보"));
            add(new Car("소나타", "2.0"));
            add(new Car("소나타", "1.6 터보"));
            add(new Car("소나타N", "2.0 터보"));
            add(new Car("K5", "1.6 터보"));
            add(new Car("K5", "2.0"));
            add(new Car("그랜저", "2.5"));
            add(new Car("그랜저", "1.6 하이브리드"));
            add(new Car("그랜저", "3.5"));
            add(new Car("캐스퍼 터보", "1.0 터보"));
            add(new Car("캐스퍼 일반", "1.0"));
            add(new Car("아반떼", "1.6"));
            add(new Car("아반떼N", "2.0 터보"));
            add(new Car("소나타", "2.0"));
            add(new Car("소나타", "1.6 터보"));
            add(new Car("소나타N", "2.0 터보"));
            add(new Car("K5", "1.6 터보"));
            add(new Car("K5", "2.0"));
            add(new Car("그랜저", "2.5"));
            add(new Car("그랜저", "1.6 하이브리드"));
            add(new Car("그랜저", "3.5"));
            add(new Car("캐스퍼 터보", "1.0 터보"));
            add(new Car("캐스퍼 일반", "1.0"));
            add(new Car("아반떼", "1.6"));
            add(new Car("아반떼N", "2.0 터보"));
            add(new Car("소나타", "2.0"));
            add(new Car("소나타", "1.6 터보"));
            add(new Car("소나타N", "2.0 터보"));
            add(new Car("K5", "1.6 터보"));
            add(new Car("K5", "2.0"));
            add(new Car("그랜저", "2.5"));
            add(new Car("그랜저", "1.6 하이브리드"));
            add(new Car("그랜저", "3.5"));
        }};

        LinearLayout container = findViewById(R.id.addview_container);
        LayoutInflater layoutInflater = LayoutInflater.from(AddViewActivity.this);

        for(int i = 0 ; i < carArrayList.size() ; i++) {
            View itemView = layoutInflater.inflate(R.layout.addview_item, null, false);
            TextView carName = itemView.findViewById(R.id.car_name);
            TextView engine = itemView.findViewById(R.id.car_engine);

            carName.setText(carArrayList.get(i).carName);
            engine.setText(carArrayList.get(i).carEndine);

            container.addView(itemView);
        }

    }
}

+ Recent posts