상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - ViewPager의 다이나믹한 데이터 로딩 구현하기.
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
ViewPager를 사용하여 다이나믹한 데이터를 로딩하는 것은 Android 애플리케이션에서 사용자에게 스와이프 가능한 UI를 제공하는 데 매우 유용합니다. 다음은 ViewPager를 사용하여 다이나믹한 데이터를 로딩하는 방법에 대한 가이드입니다. 1. 프로젝트 설정 먼저, `ViewPager`와 `Fragment`를 사용하기 위한 의존성을 추가합니다. `build.gradle` 파일에 `androidx` 라이브러리를 추가합니다. ```groovy dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.fragment:fragment:1.3.6' implementation 'androidx.viewpager2:viewpager2:1.0.0' } ``` 2. 레이아웃 파일 생성 `activity_main.xml` 파일에 `ViewPager2`를 추가합니다. ```xml <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 3. 데이터 모델 생성 데이터 모델을 정의합니다. 예를 들어, 간단한 `Item` 클래스를 사용합니다. ```java public class Item { private String title; public Item(String title) { this.title = title; } public String getTitle() { return title; } } ``` 4. Adapter 클래스 생성 `RecyclerView.Adapter`를 확장하여 `ViewPagerAdapter`를 정의합니다. ```java import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.List; public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewHolder> { private List<Item> itemList; public ViewPagerAdapter(List<Item> itemList) { this.itemList = itemList; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Item item = itemList.get(position); holder.titleTextView.setText(item.getTitle()); } @Override public int getItemCount() { return itemList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { TextView titleTextView; public ViewHolder(@NonNull View itemView) { super(itemView); titleTextView = itemView.findViewById(R.id.itemTitle); } } } ``` 5. MainActivity 설정 `MainActivity`에서 `ViewPager`를 설정하고 데이터를 로딩합니다. ```java import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager2.widget.ViewPager2; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ViewPager2 viewPager; private ViewPagerAdapter viewPagerAdapter; private List<Item> itemList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = findViewById(R.id.viewPager); itemList = new ArrayList<>(); loadInitialData(); viewPagerAdapter = new ViewPagerAdapter(itemList); viewPager.setAdapter(viewPagerAdapter); } private void loadInitialData() { // 초기 데이터 로드 for (int i = 0; i < 10; i++) { itemList.add(new Item("Item " + (i + 1))); } } // <a href='https://sangseek.com/sangseeks/데이터 추가/ko'>데이터 추가</a> 메소드 public void addData(Item newItem) { itemList.add(newItem); viewPagerAdapter.notifyItemInserted(itemList.size() - 1); } } ``` 6. 다이나믹 데이터 로딩 다이나믹한 데이터 로딩은 필요에 따라 `addData` 메소드를 호출하여 새로운 아이템을 추가하는 방식으로 구현할 수 있습니다. ```java // 예를 들어, 버튼 클릭 시 새로운 데이터를 추가할 수 있습니다. public void onAddItemClick(View view) { addData(new Item("New Item " + (itemList.size() + 1))); } ``` 7. item_view.xml 생성 각 페이지의 레이아웃을 정의하는 `item_view.xml` 파일을 만듭니다. ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/itemTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp"/> </LinearLayout> ``` 결론 이러한 방식으로 `ViewPager`를 사용하여 다이나믹하게 데이터를 로드할 수 있습니다. 이 코드는 기본적인 구현이며, 실제 애플리케이션에서는 네트워크 요청이나 데이터베이스에서 데이터를 fetch하는 등의 더 복잡한 로직이 필요할 수 있습니다. 이러한 부분은 `AsyncTask` 또는 `ViewModel`과 `LiveData`를 사용하여 구현할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기