Tôi có một số ListFragment
và một bộ điều hợp tùy chỉnh.Làm thế nào để gọi một phương thức được định nghĩa trong một ListFragment từ một bộ điều hợp?
Từ bộ điều hợp, tôi nhận được sự kiện onClick
từ nút được xác định trong các hàng. Trong phương pháp onClick
tôi nhận được một số id, mà tôi muốn vượt qua để ListFragment
để làm một số công cụ.
Làm cách nào tôi có thể gọi phương thức showTask trong số ListFragment
từ bộ điều hợp?
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();
}
}
bộ chuyển đổi
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) ?
}
};
}
Tại sao phương thức onClick của bạn trong bộ điều hợp chứ không phải trong hoạt động? –
Hãy để mảnh của bạn triển khai giao diện 'IShowTask' (có phương thức' showTask') sau đó để adapter có phương thức 'setShowTaskListener (IShowTask)' ... thì ... bạn là lập trình viên, phải không? :) – Selvin
Tôi đã đăng câu trả lời theo cách bạn muốn, nhưng bạn không nên tạo 'OnClickListeners' cho mỗi chế độ xem. Bạn nên xem xét việc đặt một 'OnListItemClickListener' vào' ListView' của bạn. – tolgap