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 中如何实现 Fragment 和 Adapter 之间的通信?的详细内容。更多信息请关注PHP中文网其他相关文章!