>Java >java지도 시간 >Android에서 프래그먼트와 어댑터 간의 통신을 어떻게 구현할 수 있나요?

Android에서 프래그먼트와 어댑터 간의 통신을 어떻게 구현할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 07:20:02826검색

How can you implement communication between a Fragment and an Adapter in Android?

프래그먼트와 어댑터 간의 인터페이스 구현

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.