불로구

안드로이드 스튜디오 - addView 본문

카테고리 없음

안드로이드 스튜디오 - addView

맹이맹이 2021. 4. 21. 13:26
반응형
addView란?

- 현재는 recycleview를 더 많이 사용하지만 recycleview를 사용하기 위해 알아야하는 기술

- 액티비티가 호출하는 xml 레이아웃에 소스코드로 직접 view를 만들어서 add한다.

 

<?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="#00cc00"
    android:orientation="vertical"
    android:padding="6dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

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

        <TextView
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="#ffffff" />

        <TextView
            android:id="@+id/car_engine"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="4dp"
            android:textSize="50dp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/white"/>
</LinearLayout>

-> item_view.xml 파일을 만들어서 추가할 xml 요소를 작성한다.

 

 <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" />
    </ScrollView>

-> addview를 추가할 자리를 만들고 스크롤 처리했다

 

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        //아이템 리스트
        val carList = ArrayList<Car>()
        for(i in 0 until 10){
            carList.add(Car(""+i+"번째 자동차", ""+i+"순위 엔진"))
        }

        val container = findViewById<LinearLayout>(R.id.addview_container)
        val inflater = LayoutInflater.from(this@MainActivity)
        for(i in 0 until carList.size){
            val itemView = inflater.inflate(R.layout.item_view, null)
            val carNameView = itemView.findViewById<TextView>(R.id.car_name)
            val carEngineView = itemView.findViewById<TextView>(R.id.car_engine)

            carNameView.setText(carList.get(i).name)
            carEngineView.setText(carList.get(i).engine)
            container.addView(itemView)
        }

    }
}

class Car(val name:String , val engine:String){

}
반응형
Comments