프래그먼트와 어댑터 간의 인터페이스 구현
Android 개발 영역에서 프래그먼트와 어댑터 간의 인터페이스는 일반적인 작업입니다. 이를 용이하게 하기 위해 내장된 어댑터 인터페이스와 함께 사용자 정의 CursorAdapter를 사용할 수 있습니다. 이 인터페이스는 어댑터와 프래그먼트 간의 통신 채널 역할을 합니다.
프래그먼트(MyListFragment)에 ListView와 사용자 정의된 CursorAdapter가 포함되어 있는 시나리오를 생각해 보세요. 목록의 각 행에는 버튼이 포함되어 있으며, 버튼을 클릭하면 조각에서 작업이 수행되어야 합니다. 이를 달성하기 위해 인터페이스인 AdapterInterface가 어댑터 내에 정의됩니다.
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } private AdapterInterface buttonListener; // ... }
어댑터의 바인딩 보기 메소드 내에서 각 행의 버튼에 대해 OnClickListener가 설정됩니다.
@Override public void bindView(final View view, final Context context, final Cursor cursor) { // ... holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // some action // need to notify MyListFragment if (buttonListener != null) { buttonListener.buttonPressed(); } } }); }
버튼 클릭 이벤트를 처리하려면 AdapterInterface를 프래그먼트(MyListFragment)에 구현해야 합니다.
public class MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // some action } }
어댑터와 프래그먼트 간의 통신을 설정하기 위해 인스턴스 변수와 함께 새 생성자가 어댑터에 도입됩니다. 인터페이스 참조를 유지합니다.
AdapterInterface buttonListener; public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context,c,flags); this.buttonListener = buttonListener; }
어댑터를 생성할 때 프래그먼트는 인터페이스 구현을 제공하기 위해 생성자에 인수로 전달됩니다.
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
이 접근 방식은 어댑터의 버튼을 클릭하면 프래그먼트의 ButtonPressed 메소드가 호출되어 어댑터와 프래그먼트 간의 원하는 통신이 용이해집니다.
위 내용은 Android에서 프래그먼트와 어댑터 간의 통신을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!