ListFragment
とカスタムアダプターがあります。アダプタからListFragmentで定義されたメソッドを呼び出す方法は?
アダプターからは、行に定義されたボタンからonClick
イベントを取得します。 onClick
メソッドでは、私はListFragment
にいくつかのことをするために渡したいいくつかのIDを取得します。
アダプタからListFragment
のshowTaskメソッドを呼び出すにはどうすればよいですか?アダプタは、断片の内部クラスであるために、それだけで直接メソッドを呼び出すことができるように
listfragment
public class TaskListFragment extends ListFragment{
/* ... */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new TaskListAdapter(getActivity(), data);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setListAdapter(mAdapter);
}
public void showTask(long id) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
TaskFragment taskFragment = new TaskFragment();
Bundle args = new Bundle();
args.putLong("id", id);
taskFragment.setArguments(args);
ft.replace(R.id.fragment_container, taskFragment);
ft.commit();
}
}
アダプタ
public class TaskListAdapter extends ArrayAdapter<Task>{
/* ... */
private OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
long id = (Integer) v.getTag();
// how can I call showTask(id) ?
}
};
}
なぜあなたのonClickメソッドがアクティビティではなくアダプタ内にありますか? –
あなたのフラグメントが 'showhowtask'インターフェース(' showTask'メソッドを持っています)を実装して、アダプタに 'setShowTaskListener(IShowTask)'メソッドを持たせるようにしてください...そして...あなたはプログラマですね。 :) – Selvin
私はあなたが望むように回答を投稿しましたが、すべてのビューに対して 'OnClickListeners'を作成すべきではありません。 'ListView'に' OnListItemClickListener'を置くことを検討すべきです。 – tolgap