지금까지 나는 RecyclearView의 기본 내용을 총결하였다

결말이 뭐예요?

  • View의widget
  • 을 동적으로 반복 표시
  • Support Library 포함
  • 예제

    어떻게 사용합니까?

  • RecyclearView를 이용하려면 최소한 어댑터와 ViewHolder
  • 를 만들어야 한다.
  • RecyclearView의 레이아웃 관리는 LayoutManager
  • 를 이용한다

    한번 해보세요.


    프로비저닝

  • 이번엔 최소한의 구성
  • RecyclerViewActivity.java... RecyclearView
  • 표시
  • RecyclerViewAdapter.java...View와 데이터 링크
  • activity_recycler_view.xml··RecyclearView 전체 레이아웃
  • row.xml··RecyclearView 내 1줄 레이아웃
  • 절차.


    (1) build.gradle에서 Support Library의 종속성 설명


    (이번에도 카드뷰를 사용했기 때문에 이 점을 기술했다)
    build.gradle
    dependencies {
        ...
        compile 'com.android.support:recyclerview-v7:23.3.0'
        compile 'com.android.support:cardview-v7:23.3.0'
    
        ...
    }
    

    (2) 전체 RecyclearView의 레이아웃 정의


    activity_recycler_view.xml
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    

    (3) 각 행의 레이아웃 정의


    row.xml
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        android:layout_margin="8dp"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp" />
    </android.support.v7.widget.CardView>
    
    

    (4) RecyclearView의 초기화 처리를 Activity로 기술하기


    RecyclerViewActivity.java
    
    public class RecyclerViewActivity extends AppCompatActivity {
    
        private RecyclerView recyclerView;
        private RecyclerViewAdapter recyclerViewAdapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_recycler_view);
            recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    
             // [1] 
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            recyclerView.setLayoutManager(linearLayoutManager);
    
             // [2] 
            recyclerViewAdapter = new RecyclerViewAdapter(getListData());
            recyclerView.setAdapter(recyclerViewAdapter);
        }
    
        private List<String> getListData() {
            ArrayList<String> list = new ArrayList<>();
            list.add("睦月");
            list.add("如月");
            list.add("弥生");
            list.add("卯月");
            list.add("皐月");
            list.add("水無月");
            list.add("文月");
            list.add("葉月");
            list.add("長月");
            list.add("神無月");
            list.add("霜月");
            list.add("師走");
            return list;
        }
    
    }
    
    

    (5) 데이터 및 View 링크를 위한 어댑터 클래스 만들기


    RecyclerViewAdapter.java
    
    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
    
        protected List<String> dataSet;
    
        // [3]
        public static class ViewHolder extends RecyclerView.ViewHolder {
            public final TextView textView;
    
            public ViewHolder(View v) {
                super(v);
                textView = (TextView) v.findViewById(R.id.text_view);
            }
        }
    
        // [4]
        public RecyclerViewAdapter(List<String> myDataSet) {
            dataSet = myDataSet;
        }
    
        // [5]
        @Override
        public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);
            ViewHolder vh = new ViewHolder(v);
            return vh;
        }
    
        // [6]
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            String text = dataSet.get(position);
            holder.textView.setText(text);
        }
    
        // [7]
        @Override
        public int getItemCount() {
            return dataSet.size();
        }
    
    }
    
    
    

    설명

  • [1]
    LinerLayoutManager의 실례를 생성하고 RecyclearView의 setLayoutManager () 방법의 매개 변수로 전달합니다.Liner LayoutManager 외에도 GridLayoutManager 등의 종류가 있습니다.표시할 배치를 기준으로 변경합니다.
  • [2]
    어댑터를 생성하고 view로 설정합니다.이번에는 어댑터를 만들 때 데이터도 맡겼어요.
  • [3]
    RecyclerView.ViewHolder의 학급을 물려받았다.View에 대한 참조를 유지합니다.[5]의 onCreate ViewHolder () 방법을 이용하여 ViewHolder의 실례를 되돌려줍니다.
  • [4]
    이번에 어댑터가 생성한 시간에도 데이터를 그녀에게 건네주었다.
  • [5]
    View inflate(팽창), ViewHolder를 만들고 돌아갑니다.
  • [6]
    ViewHolder에 데이터를 설정합니다.
  • [7]
    RecyclearView로 표시된 항목의 수를 반환합니다.
  • 감상

  • 처리 절차가 따라잡았지만 솔직히 LayoutManager가 뒤에서 무슨 일을 하고 있는지, ViewHolder가 무엇을 하고 있는지 아직 완전히 파악하지 못했다고 생각한다.
  • 좋은 웹페이지 즐겨찾기