5

Tôi có một đoạn tùy chỉnh được gắn vào MainActivity của tôi. Tệp bố cục của đoạn chứa tiện ích recyclerview.parent.getContext trong phương thức onCreateViewHolder của RecyclerView.Adapter

fragment_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical"/> 

</FrameLayout> 

Trong RecyclerView.Adapter tôi phương pháp onCreateViewHolder trông như thế này:

@Override 
public MyAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout 
      .list_item, parent, false); 
    return new MyHolder(view); 
} 

Câu hỏi của tôi là về mẹ ViewGroup từ phương pháp này. ViewGroup này là tiện ích RecyclerView của tôi nhưng tại sao lại cho tôi parent.getContext một tham chiếu đến MainActivity của tôi chứ không phải cho đoạn của tôi?

Trả lời

11

Các mảnh vỡ không thực sự có ngữ cảnh. Khi làm việc trong một đoạn và bạn cần một ngữ cảnh, thông thường bạn cần phải gọi getActivity(). Trong trường hợp cụ thể này, bối cảnh được truyền từ hoạt động này sang phân đoạn tới RecyclerView - hãy nhớ một khung nhìn có một ngữ cảnh trong hàm tạo của nó - và vì vậy khi bạn gọi getContext() trên RecyclerView (ViewGroup), nó trả về hoạt động.

+0

Cảm ơn bạn đã giải thích siêu! Tôi đã thông minh hơn trước. –

Các vấn đề liên quan