RecyclerView 또는 ListView? : Kotlin의 장단점 및 예

14842 단어 androidkotlin
ListView는 구현하기가 매우 쉽지만 모든 프로젝트에서 사용해야 한다는 의미는 아닙니다. 성능을 개선하고 삶을 더 쉽게 만드는 데 도움이 되는 더 많은 옵션이 있습니다. 따라서 작은 항목 목록이 있을 때 ListView를 사용해야 합니다. 이는 ListView가 항목을 다르고 고유한 보기로 표시하기 때문에 항목이 많을수록 사용자가 위/아래로 스크롤할 때 더 많은 요소를 만들어야 합니다. 목록.

반면에 이름에서 알 수 있듯이 뷰를 재활용하는 RecyclerView가 있습니다. 즉, 뷰가 화면에서 사라지면 RecyclerView가 뷰를 재사용합니다. 이를 달성하려면 이러한 유형의 목록을 구현할 때 약간의 코드와 주의를 추가해야 합니다.



ListView: 장단점



장점
  • 간편한 구현
  • OnItemClickListener

  • 단점
  • 막대한 항목 목록에서 성능 저하
  • ViewHolder 패턴을 사용하는 복잡한 방법(하지만 사용할 수 있음)
  • 세로 목록만 해당

  • RecyclerView: 장단점



    장점
  • 항목을 추가, 업데이트 및 제거할 때의 애니메이션
  • 아이템장식(테두리,칸막이)
  • 목록 또는 그리드로 사용할 수 있습니다
  • .
  • DiffUti
  • 와 함께 사용하게 해줍니다.
  • 특히 RecyclerView.setHasFixedSize를 사용하는 경우 더 빠른 성능
  • 필수 ViewHolder 패턴

  • 단점
  • 더 많은 코드와 때로는 불필요하고 더 어렵습니다
  • .
  • OnItemClickListener를 추가하는 쉬운 방법이 아님

  • RecyclerView 예시



    매우 기본적인 RecyclerView를 구현하는 데 필요한 세 가지 사항은 다음과 같습니다.

    우선 종속성에 추가하십시오.

      implementation 'androidx.recyclerview:recyclerview:1.1.0'
    


    XML 파일의 레이아웃에서 RecyclerView에 대한 참조를 추가합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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"
        tools:context=".MainActivity">
    
        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/recyclerView"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    


    어댑터. RecyclerView에서 말했듯이 ViewHolder 패턴을 구현하려면 어댑터를 만들어야 합니다. 어댑터를 사용하려면 필수입니다.

    class listAdapter(val data: List<String>): RecyclerView.Adapter<listAdapter.MyViewHolder> (){
    
        class MyViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView)
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
            val textView = LayoutInflater.from(parent.context)
                .inflate(android.R.layout.simple_list_item_1, parent, false) as TextView
            return MyViewHolder(textView)
    
        }
    
        override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
            holder.textView.text = data[position];
        }
        override fun getItemCount() = data.size
    }
    


    구현, 이것은 우리가 만든 어댑터를 사용하는 방법과 항목을 표시하는 방법의 예입니다.

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            val listItems = listOf("1", "2", "3", "4", "5", "6", "7");
    
             setContentView(R.layout.activity_main)
             val myManager: RecyclerView.LayoutManager = LinearLayoutManager(this)
             val myAdaapter: RecyclerView.Adapter<*> = listAdapter(listItems)
             val recyclerView: RecyclerView = findViewById(R.id.recyclerView);
             recyclerView.layoutManager = myManager;
             recyclerView.adapter = myAdaapter;
             recyclerView.setHasFixedSize(true);
    
        }
    }
    


    ListView 예



    간단한 목록 보기의 경우 너무 많은 코드가 필요하지 않습니다. 먼저 모든 레이아웃에 ListView 참조가 있어야 합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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"
        tools:context=".MainActivity">
    
        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/listview"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    


    구현. 그런 다음 항목을 표시하는 간단한 어댑터를 만들 수 있습니다.

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            val listItems = listOf("1", "2", "3", "4", "5", "6", "7");
    
            setContentView(R.layout.list_view_layout)
            val listview : ListView = findViewById(R.id.listview)
            val myAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)
            listview.adapter = myAdapter
    
    
        }
    }
    



    Android 프로젝트의 코드를 살펴보고 싶다면 다음 예제가 포함된 저장소가 있습니다. RecyclerView vs ListView

    좋은 웹페이지 즐겨찾기