Interface Implementation between Fragment and Adapter
In the realm of Android development, interfacing between fragments and adapters is a common task. To facilitate this, a custom CursorAdapter can be employed with an adapter interface embedded within. This interface serves as a communication channel between the adapter and the fragment.
Consider a scenario where a fragment (MyListFragment) contains a ListView and a customized CursorAdapter. Each row in the list contains a button, and upon clicking it, an action needs to be performed in the fragment. To achieve this, an interface, AdapterInterface, is defined within the adapter.
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } private AdapterInterface buttonListener; // ... }
Within the adapter's bindView method, an OnClickListener is set for the button in each row.
@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(); } } }); }
The AdapterInterface should be implemented in the fragment (MyListFragment) to handle the button click event.
public class MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // some action } }
To establish communication between the adapter and fragment, a new constructor is introduced in the adapter, along with an instance variable to hold the interface reference.
AdapterInterface buttonListener; public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context,c,flags); this.buttonListener = buttonListener; }
When creating the adapter, the fragment is passed as the argument to the constructor to provide the interface implementation.
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
This approach ensures that when the button in the adapter is clicked, the buttonPressed method in the fragment is invoked, facilitating the desired communication between the adapter and the fragment.
위 내용은 Android에서 프래그먼트와 어댑터 간의 통신을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!