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);
}
}
}
'Android(Java)' 카테고리의 다른 글
[Java] AsyncTask Deprecated (2) | 2024.01.23 |
---|---|
[Java] SharedPreferences 기본사용방법 (0) | 2024.01.23 |
[Java]Flagment 기본 (0) | 2024.01.16 |
[Java] Fragment 상호 데이터 전송 (0) | 2024.01.16 |
[Java] Material TabLayout / ViewPager2 / Fragment 연동 기초 (0) | 2024.01.16 |