フラグメントとアダプター間の通信用のインターフェイスの実装
説明したシナリオには、フラグメント MyListFragment, ListView とカスタム CursorAdapter. を含む。リストの特定の行でボタンが押されたときに MyListFragment に通知することを目的としています。この通信を実現するには、インターフェイス ベースのアプローチを採用できます。
MyListAdapter で、コールバック メソッド buttonPressed を使用してインターフェイス AdapterInterface を定義します。 ()、 ボタンのクリック時に呼び出されます:
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } ... }
MyListAdapter を変更して、タイプ AdapterInterface のインスタンス変数とコンストラクターを含めます。このインターフェースのインスタンスを引数として受け入れます:
private AdapterInterface buttonListener; public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context,c,flags); this.buttonListener = buttonListener; }
MyListFragment で、AdapterInterface を実装し、buttonPressed(), をオーバーライドします。アダプター内の AdapterView の onClickListener から呼び出されます。
public MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // ... } }
MyListFragmentMyListAdapter をインスタンス化します。 > そして、MyListFragment 自体のインスタンスを引数としてアダプターのコンストラクターに渡します。
これを行うことで、MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
は buttonPressed(リスト行のボタンが押されるたびに、MyListFragment の) メソッド。これにより、アダプターとフラグメント間のシームレスな通信が可能になり、ボタンのクリック時に必要なアクションを実行できるようになります。
以上がインターフェイスを使用してフラグメントとそのアダプターの間で通信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。