フラグメントとアダプター間のインターフェース実装
Android 開発の領域では、フラグメントとアダプター間のインターフェースは一般的なタスクです。これを容易にするために、アダプター インターフェイスが組み込まれたカスタム CursorAdapter を使用できます。このインターフェイスは、アダプターとフラグメント間の通信チャネルとして機能します。
フラグメント (MyListFragment) に ListView とカスタマイズされた CursorAdapter が含まれるシナリオを考えてみましょう。リストの各行にはボタンが含まれており、それをクリックするとフラグメント内でアクションを実行する必要があります。これを実現するために、アダプター内でインターフェイス AdaptorInterface が定義されます。
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } private AdapterInterface buttonListener; // ... }
アダプターの bindingView メソッド内で、各行のボタンに 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) に実装する必要があります。 event.
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; }
Whenアダプターを作成すると、フラグメントが引数としてコンストラクターに渡され、インターフェース実装が提供されます。
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
このアプローチにより、ボタンがアダプターがクリックされると、フラグメント内の buttonPressed メソッドが呼び出され、アダプターとフラグメント間の必要な通信が容易になります。
以上がAndroid でフラグメントとアダプター間の通信を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。