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 메서드가 있습니까? –
당신의 조각이'showhowask (IShowTask)'메소드를 가지고 있다면, 어댑터는'setShowTaskListener (IShowTask)'메소드를 가지게하십시오. 그러면 ... 프로그래머입니까, 그렇지 않습니까? :) – Selvin
원하는 방식으로 답변을 게시했지만 모든보기에 대해 'OnClickListeners'를 작성하면 안됩니다. 'ListView'에'OnListItemClickListener'를 두는 것을 고려해야합니다. – tolgap